a place for all your custom card needs you can post scripts pics and request for card to be made also please donate to the funding for a new server made for custom card duels
 
HomePortalLatest imagesSearchRegisterLog in

Share
 

 Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots

View previous topic View next topic Go down 
AuthorMessage
Utso

Utso


Member Title : Barnacle Yoghurt
Posts : 6
Join date : 2016-02-21
Age : 27

Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Empty
PostSubject: Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots   Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Icon_minitimeTue Mar 01, 2016 8:41 pm

Originally made last year and uploaded into an imgur gallery (https://imgur.com/a/3hxwY).
Reposting the download link of the current version (2016-03-07) here for convenience:
https://drive.google.com/file/d/0B1P3qZcQ-bVuR3ZjT2JSUFh5TEU/view

I've already gone into a lot of detail on each card in the above gallery, so I'll spare myself the effort to list them all here again. Instead, here's a few more or less important things I haven't mentioned:

  • My design process involves like 15% common sense and 85% trial and error. First drafts contain little to no restrictions and are for the most part completely reworked after some playtesting. Cards can go and have gone through 5-6 complete reworks before I'm happy with them. On the other hand, this means that any flaw I don't happen to catch during testing will stay to the final version, no matter how glaringly obvious it may be to others. Feel free to point these out.
  • This expansion, titled "Coming of the Toa", is intended to be the first of several, covering the years of the Bionicle line in chronological order. The seconde one (Challenge of the Rahi) is currently in the middle of the "Trial and Error" phase, but I might upload and post it sometime soon if anyone is interested in some more experimental stuff.
  • As for the years further down the line, I have a bunch of ideas that I've worked on a bit, but not to any presentable degree. Extrapolating from these first two expansions, it would take me like 15-20 years to reach all the way to the finale in 2010, but I do technically have concepts up to the point that I am planning to implement. Let's see how far I can get with that.


The problem below has already been solved and is only kept around for documentation

Also, there is one rather tricky effect in the first expansion that I have been unable to get to work properly so far. Maybe this board's expertise can be of some help here:
Spoiler:

Any feedback or help is greatly appreciated Very Happy


Last edited by Utso on Mon Mar 07, 2016 9:52 pm; edited 1 time in total
Back to top Go down
TGAP-Trixie

TGAP-Trixie


Member Title : Trixie does not even...
Posts : 273
Join date : 2014-04-17

Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Empty
PostSubject: Re: Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots   Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Icon_minitimeThu Mar 03, 2016 2:25 am

I'd recommend the ygopro forums for help, that's where I've been going (I've just been posting my cards here and "updates" to mackpro, which is usually just my cards). You'll still get help here but it seems everyone's been busier than when I was first here.

If you don't yet, would you mind adding some some deck profiles along with your download link? It would help in playtesting. 

For your equip, I think I haven't done anything as challenging as that (best was either drawing cards if the opponent would or setting trap cards after resolving them instead of sending them to the graveyard). My only question is how does it know to check to gain the effects of cards banished for the equip cost and not just any "Kanohi" equip spells that have been banished already? I mostly ask for my own curiosity, I really don't know if I could help you.
Back to top Go down
Utso

Utso


Member Title : Barnacle Yoghurt
Posts : 6
Join date : 2016-02-21
Age : 27

Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Empty
PostSubject: Re: Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots   Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Icon_minitimeThu Mar 03, 2016 9:08 am

TGAP-Trixie wrote:
I'd recommend the ygopro forums for help, that's where I've been going (I've just been posting my cards here and "updates" to mackpro, which is usually just my cards). You'll still get help here but it seems everyone's been busier than when I was first here.
I guess it would be a good idea to ask over there. The main reason I came here instead is because from a quick look, the ygopro board seems mostly focused on coding and not the entire design process from start to finish, but they should be perfectly suited to help with a script.
TGAP-Trixie wrote:
If you don't yet, would you mind adding some some deck profiles along with your download link? It would help in playtesting.
Can do, just be warned that they'll be crap because I suck at this game Razz

TGAP-Trixie wrote:
My only question is how does it know to check to gain the effects of cards banished for the equip cost and not just any "Kanohi" equip spells that have been banished already? I mostly ask for my own curiosity, I really don't know if I could help you.
The equip operation has you select the 6 targets to gain effects from and then loops through those targets, setting each one as a card target for the Golden Kanohi. The actual effect gain operation called at EVENT_ADJUST (whatever that may be) then loops through the card targets, checks if they are removed, copies the effect and assigns a flag effect to avoid copying anything multiple times. So it doesn't check your removed cards for "Kanohi" spells, but instead checks if the spells you selected at activation are still removed.
Now that I think about it, there doesn't seem to be anything in the code about ever removing an effect once it has been gained. That might be the cause of one of my problems, but it can't be the only one because losing the effects frequently DOES work.
BUT WAIT
Looking again, the loop terminates once it hits the first non-removed target, so I basically lose random effects based on the targets' internal ordering once something gets shuffled back. Past me, what exactly were you thinking when you wrote that and how did you not notice for months?
Anyway, you might just have helped me fix this by making me critically evaluate my code, so thanks a lot!
Back to top Go down
TGAP-Trixie

TGAP-Trixie


Member Title : Trixie does not even...
Posts : 273
Join date : 2014-04-17

Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Empty
PostSubject: Re: Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots   Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Icon_minitimeFri Mar 04, 2016 6:05 pm

Ah I see now, it checks that all IDs are removed, but once one gets shuffled back, the loop terminates on that ID so it doesn't continue checking the others to get the next ID in line (so if you shuffle back the first equip you banished, you lose everything else, but if you shuffle back the fifth, you only lose out on the 6th). As much of a pain as it could be to do, isn't there some way you could shuffle the last equip that you banished as the cost and work backwards each time? Though I imagine it'd be quite difficult to describe what is going on in the card's description.
Back to top Go down
Utso

Utso


Member Title : Barnacle Yoghurt
Posts : 6
Join date : 2016-02-21
Age : 27

Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Empty
PostSubject: Re: Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots   Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Icon_minitimeSun Mar 06, 2016 9:37 am

The solution to the loop problem is really simple, actually - I just need to move the second condition into a nested if. Doesn't make the card work properly either, so I guess something is wrong with my use of EVENT_ADJUST. Oh well, hopefully someone on the YGOPro forums understands that stuff enough to explain what the problem really is.

EDIT: Never mind, I managed to fix it after all. Just needed to change the approach a bit.
Code:
--Golden Great Kanohi
function c10100052.initial_effect(c)
 --Activate
 local e1=Effect.CreateEffect(c)
 e1:SetCategory(CATEGORY_EQUIP)
 e1:SetType(EFFECT_TYPE_ACTIVATE)
 e1:SetCode(EVENT_FREE_CHAIN)
 e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
 e1:SetTarget(c10100052.target1)
 e1:SetOperation(c10100052.operation1)
 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(c10100052.condition2)
 c:RegisterEffect(e2)
 --Gain effects
 local e3=Effect.CreateEffect(c)
 e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
 e3:SetCode(EVENT_TO_DECK)
 e3:SetRange(LOCATION_SZONE)
 e3:SetOperation(c10100052.operation3)
 e3:SetLabelObject(e1)
 c:RegisterEffect(e3)
 local e3a=e3:Clone()
 e3a:SetCode(EVENT_REMOVE)
 c:RegisterEffect(e3a)
 local e3b=e3:Clone()
 e3b:SetCode(EVENT_TO_GRAVE)
 c:RegisterEffect(e3b)
 local e3c=e3:Clone()
 e3c:SetCode(EVENT_TO_HAND)
 c:RegisterEffect(e3c)
 --Return
 local e4=Effect.CreateEffect(c)
 e4:SetDescription(aux.Stringid(10100052,0))
 e4:SetCategory(CATEGORY_TODECK)
 e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
 e4:SetCode(EVENT_PHASE+PHASE_END)
 e4:SetRange(LOCATION_SZONE)
 e4:SetCountLimit(1)
 e4:SetCondition(c10100052.condition4)
 e4:SetTarget(c10100052.target4)
 e4:SetOperation(c10100052.operation4)
 c:RegisterEffect(e4)
end
--e1 - Activate
function c10100052.filter1a(c,tp)
 return c:IsFaceup() and c:IsSetCard(0x155) and Duel.GetMatchingGroup(c10100052.filter1b,tp,LOCATION_GRAVE,0,nil,c):GetClassCount(Card.GetCode)>=6 and not c:GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x158)
end
function c10100052.filter1b(c,ec)
 return c:IsSetCard(0x158) and c:CheckEquipTarget(ec)
end
function c10100052.target1(e,tp,eg,ep,ev,re,r,rp,chk)
 if chk==0 then return Duel.IsExistingTarget(c10100052.filter1a,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end
 Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP)
 Duel.ClearTargetCard()
 Duel.SelectTarget(tp,c10100052.filter1a,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp)
 Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0)
end
function c10100052.operation1(e,tp,eg,ep,ev,re,r,rp)
 local c=e:GetHandler()
 local tc=Duel.GetFirstTarget()
 local cg = Duel.SelectMatchingCard(tp,c10100052.filter1b,tp,LOCATION_GRAVE,0,6,6,nil,tc)
 cg:KeepAlive()
 if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Remove(cg,POS_FACEUP,REASON_EFFECT) then
 e:SetLabelObject(cg)
 local cgc=cg:GetFirst()
 while cgc do
 local code=cgc:GetOriginalCode()
 if cgc:IsLocation(LOCATION_REMOVED) then
 if c:IsFaceup() and c:GetFlagEffect(code)==0 then
 local cid=c:CopyEffect(code, RESET_EVENT+0x1fe0000,1)
 c:RegisterFlagEffect(code,RESET_EVENT+0x1fe0000,0,1)
 c:SetFlagEffectLabel(code,cid)
 end
 elseif c:GetFlagEffect(code)~=0 then
 c:ResetEffect(c:GetFlagEffectLabel(code),RESET_COPY)
 c:ResetFlagEffect(code)
 end
 cgc=cg:GetNext()
 end
 Duel.Equip(tp,c,tc)
 end
end
--e2 - Equip Limit
function c10100052.condition2(e,c)
 return c:IsSetCard(0x155) and e:GetHandler():GetEquipTarget()==c
end
--e3 - Gain effects
function c10100052.operation3(e,tp,eg,ep,ev,re,r,rp)
 local c=e:GetHandler()
 if e:GetLabelObject():GetLabelObject() then
 local wg=e:GetLabelObject():GetLabelObject()
 local wbc=wg:GetFirst()
 while wbc do
 local code=wbc:GetOriginalCode()
 if wbc:IsLocation(LOCATION_REMOVED) then
 if c:IsFaceup() and c:GetFlagEffect(code)==0 then
 local cid=c:CopyEffect(code, RESET_EVENT+0x1fe0000,1)
 c:RegisterFlagEffect(code,RESET_EVENT+0x1fe0000,0,1)
 c:SetFlagEffectLabel(code,cid)
 end
 elseif c:GetFlagEffect(code)~=0 then
 c:ResetEffect(c:GetFlagEffectLabel(code),RESET_COPY)
 c:ResetFlagEffect(code)
 end
 wbc=wg:GetNext()
 end
 end
end
--e4 - Return
function c10100052.filter4(c)
 return c:IsSetCard(0x158) and c:IsAbleToDeck()
end
function c10100052.condition4(e,c)
 return Duel.GetTurnPlayer()==e:GetHandlerPlayer()
end
function c10100052.target4(e,tp,eg,ep,ev,re,r,rp,chk)
 if chk==0 then return Duel.IsExistingMatchingCard(c10100052.filter4,tp,LOCATION_REMOVED,0,1,nil) end
 Duel.SetTargetPlayer(tp)
 Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_REMOVED)
end
function c10100052.operation4(e,tp,eg,ep,ev,re,r,rp)
 local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER)
 local g=Duel.GetMatchingGroup(c10100052.filter4,p,LOCATION_REMOVED,0,nil)
 if g:GetCount()>0 then
 Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK)
 local sg=g:Select(p,1,1,nil)
 if sg:GetCount()>0 then
 Duel.SendtoDeck(sg,nil,2,REASON_EFFECT)
 end
 end
 Duel.ShuffleDeck(p)
end
For reference, here's what I changed:

  • Instead of having Effect #3 trigger on "EVENT_ADJUST", I split it into several identical effects that trigger when a card changes location. It might miss some ultra-specific edge case that could make the card need a refresh without any of that happening, but what's good enough for Exodia is good enough for me.
  • As it turns out, card targets can never be in the deck, which means that they are "untargeted" the moment they're shuffled in there. This means I need to use a group of cards as a label object instead, but it needs to be set by one effect and read by the other. To accomplish this, I store the cards in Effect #1 and use that effect as the label object for Effect #3. Seems overcomplicated, but it has been done before and it works perfectly.
  • The loop in Effect #3 had its second condition changed into a nested if to make sure it doesn't terminate prematurely. That if then got an else branch to remove the effects once the corresponding card becomes unbanished. For this, I need the id the effect is registered with, which somehow needs to be stored separately for each card. The solution for this is the flag effect that tells me whether an effect has already been copied - I can simply assign a "Flag Effect Label" that stores the registration id and can be accessed with the card id.
  • Lastly, Effect #3 now only starts triggering after the initial banishing. This means that I have to run the loop once and make the initial effect copies in Effect #1 already.

I'll update the downloads with the changed script and some example decklists once I get home.
Back to top Go down
Sponsored content





Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Empty
PostSubject: Re: Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots   Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots Icon_minitime

Back to top Go down
 

Bionicle Cards AKA Japanese Children's Cardgames on Swedish Toy Robots

View previous topic View next topic Back to top 
Page 1 of 1

 Similar topics

-
» Fairy tail anime cards 49/49 more cards added
» New MtG cards
» here is a set of cards
» Few of my D.D. Cards
» I need these cards plz :D

Permissions in this forum:You cannot reply to topics in this forum
Mackpro :: MackPro :: Custom Cards-