TGAP-Trixie
Member Title : Trixie does not even... Posts : 273 Join date : 2014-04-17
| Subject: Hand support Wed Feb 18, 2015 11:04 pm | |
| It's actually ok. The field spell makes them pretty abusive however - Hands:
- scripts:
Wind Hand: - Code:
-
function c66000001.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TOGRAVE+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(c66000001.condition) e1:SetTarget(c66000001.target) e1:SetOperation(c66000001.operation) c:RegisterEffect(e1) end function c66000001.condition(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and rp~=tp end function c66000001.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_HAND) end function c66000001.spfilter(c,e,tp) return c:IsCode(66000002) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c66000001.operation(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_HAND,nil) if g:GetCount()==0 then return end local rg=g:RandomSelect(tp,1) Duel.SendtoGrave(rg,nil,REASON_EFFECT) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local g=Duel.GetMatchingGroup(c66000001.spfilter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66000001,0)) 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 Earth Hand: - Code:
-
function c66000002.initial_effect(c) --ground 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_TO_GRAVE) e1:SetCondition(c66000002.condition) e1:SetOperation(c66000002.operation) c:RegisterEffect(e1) end function c66000002.condition(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and rp~=tp end function c66000002.spfilter(c,e,tp) return c:IsCode(66000001) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c66000002.operation(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local g=Duel.GetMatchingGroup(c66000002.spfilter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66000002,0)) 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 --disable field local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetRange(LOCATION_GRAVE) e1:SetCode(EFFECT_DISABLE_FIELD) e1:SetOperation(c66000002.disop) e1:SetReset(RESET_EVENT+0x1ff0000) e:GetHandler():RegisterEffect(e1) end function c66000002.disop(e,tp) local dis1=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0) return dis1 end Dark Hand: - Code:
-
function c66000003.initial_effect(c) --extra to grave local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TODECK+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(c66000003.condition) e1:SetTarget(c66000003.target) e1:SetOperation(c66000003.operation) c:RegisterEffect(e1) end function c66000003.condition(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and rp~=tp end function c66000003.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA)>0 end Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,0,LOCATION_EXTRA) end function c66000003.spfilter(c,e,tp) return c:IsCode(66000004) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c66000003.operation(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetMatchingGroup(Card.IsType,1-tp,LOCATION_EXTRA,0,nil,TYPE_MONSTER) 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) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local g=Duel.GetMatchingGroup(c66000003.spfilter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66000003,0)) 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 end Light Hand: - Code:
-
function c66000004.initial_effect(c) --recycle local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TODECK+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(c66000004.condition) e1:SetTarget(c66000004.target) e1:SetOperation(c66000004.operation) c:RegisterEffect(e1) end function c66000004.condition(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and rp~=tp end function c66000004.filter(c) return c:IsType(TYPE_SPELL) or c:IsType(TYPE_TRAP) and c:IsAbleToDeck() end function c66000004.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c66000004.filter(chkc) end if chk==0 then return Duel.IsExistingTarget(c66000004.filter,tp,LOCATION_GRAVE,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) local g=Duel.SelectTarget(tp,c66000004.filter,tp,LOCATION_GRAVE,0,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) end function c66000004.spfilter(c,e,tp) return c:IsCode(66000003) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c66000004.operation(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)~=1 then return end Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) Duel.ShuffleDeck(tp) local g=Duel.GetOperatedGroup() local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) if ct==1 then if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local g=Duel.GetMatchingGroup(c66000004.spfilter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66000004,0)) 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) Duel.ShuffleDeck(tp) end end end Inverse Hand: - Code:
-
function c66000005.initial_effect(c) --xyz summon aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x20c),4,2) c:EnableReviveLimit() --Invert Effect local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_QUICK_F) e1:SetCode(EVENT_CHAINING) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c66000005.invcon) e1:SetTarget(c66000005.invtg) e1:SetOperation(c66000005.invop) c:RegisterEffect(e1) --special summon local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetCost(c66000005.spcost) e2:SetTarget(c66000005.sptg) e2:SetOperation(c66000005.spop) c:RegisterEffect(e2) --damage & special summon local e3=Effect.CreateEffect(c) e3:SetCategory(CATEGORY_DAMAGE+CATEGORY_SPECIAL_SUMMON) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) e3:SetCode(EVENT_TO_GRAVE) e3:SetCondition(c66000005.condition) e3:SetTarget(c66000005.target) e3:SetOperation(c66000005.operation) c:RegisterEffect(e3) end function c66000005.invcon(e,tp,eg,ep,ev,re,r,rp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) or re:IsActiveType(TYPE_TRAP) and re:IsHasProperty(EFFECT_FLAG_PLAYER_TARGET) end function c66000005.invtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local te=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_EFFECT) local ftg=te:GetTarget() return ftg==nil or ftg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c66000005.invop(e,tp,eg,ep,ev,re,r,rp) local p=Duel.GetChainInfo(ev,CHAININFO_TARGET_PLAYER) Duel.ChangeTargetPlayer(ev,1-p) end function c66000005.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 c66000005.spfilter(c,e,tp) return c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c66000005.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) or chkc:IsLocation(LOCATION_REMOVED) and c66000005.spfilter(chkc,e,tp) end if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c66000005.spfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectTarget(tp,c66000005.spfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) end function c66000005.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 c66000005.condition(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end function c66000005.spfilter2(c,e,tp) return c:IsSetCard(0x20c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c66000005.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 c66000005.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) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local g=Duel.GetMatchingGroup(c66000005.spfilter2,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66000005,0)) 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) Duel.ShuffleDeck(tp) end end Metal Fist Memorial: - Code:
-
function c66000006.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_SINGLE) e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e2:SetRange(LOCATION_FZONE) e2:SetCondition(c66000006.indcon) e2:SetValue(1) c:RegisterEffect(e2) --no battle damage local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) e2:SetRange(LOCATION_FZONE) e2:SetTargetRange(LOCATION_MZONE,0) e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x20c)) e2:SetValue(1) c:RegisterEffect(e2) --des replace 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_FZONE) e3:SetCode(EVENT_DESTROYED) e3:SetCountLimit(1) e3:SetCondition(c66000006.spcon) e3:SetTarget(c66000006.sptg) e3:SetOperation(c66000006.spop) c:RegisterEffect(e3) end function c66000006.indcon(e) return Duel.IsExistingMatchingCard(Card.IsSetCard,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,0x20c) end function c66000006.cfilter(c,tp) return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp end function c66000006.spcon(e,tp,eg,ep,ev,re,r,rp) return eg:IsExists(c66000006.cfilter,1,nil,tp) end function c66000006.filter(c,e,tp) return c:IsSetCard(0x20c) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) end function c66000006.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.IsExistingMatchingCard(c66000006.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 c66000006.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,c66000006.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP)>0 then g:GetFirst():CompleteProcedure() end end
There is of course a wind hand (check the scripts spoiler). It's 1900 ATK/100 DEF, WIND psychic, same condition as the others, discards 1 random card from the opponent then ss earth hand. I'm missing the picture from ycm though and I don't wanna remake it xD. And you should probably run exodiuses in the deck since you'll probably be crashing your hands into the opp a lot during your turns lol. You could even exodius 1 in m1, go crazy with hands, m2 another exodius and make rank 10s I guess. Another thing to note, I made "hands" an actual archetype in the database, you need to change all the existing hands' (at least fire and ice hand, maybe prominence and magic hand if you want) setcode to 524... or whatever you want but i chose 524. If you're using 524, the hex code is 0x20c. You do need to make them an archetype though, else memorial and inverse hand won't work. I think you can ignore giant hand and giant red hand if you want to as well Unless you really plan on crashing those monsters for whatever reason |
|