dop2000's Forum Posts

  • As I explained in another post, you need to pick that second card instance. If you want to do this in the same event, you have to use "Pick all" condition. Another option is to call a function.

  • Can you explain what are you trying to do? Do you want to save all cards in the dictionary? Then you need a For Each loop.

    Pick all Cards
    For Each Cards : Dictionary add key....
    
  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Use Pathfinding behavior, there are plenty of examples.

    Here is the easiest method:

    Every 0.5 seconds
    Enemy Pathfinding is NOT moving
    System For Each Enemy
    ... Enemy find path to (random(layoutWidth), random(layoutHeight))
    
    Enemy On Path found
    ... Enemy Move along path
    
  • is there literally any way to interact with other copies of the same object in a family? Like if I click on an object it'll change the variable of another of the same object?

    Everything is possible. You just need to pick that other instance of the same object or family. You can use "System Pick All":

    On Card clicked
    Card compare variable code="A"
    ... Pick all Card
    ... Card compare variable code="B" : Card set variable price to 100
    

    or call a function:

    On Card clicked
    Card compare variable code="A" : Call function UpdateAnotherCard(Code: "B")
    
    On Function UpdateAnotherCard
    .....
    
    
  • If I use the start of the layout for turret targeting, units won't change targets after a kill. Am I wrong?

    Yes. You are confusing "Add target" and "Acquire target" actions. You only need to add a target once. Then all knights will fire at instances of Army_Undead_R whenever they are in range.

    But if you want, you can disable automatic targeting, and use "Acquire target" action instead. For example, pick all undead enemies in range, then pick the one with the lowest HP, and acquire it as a target.

  • I'm surprised there's no mention of this in the documentation.

    Also, unlike a sprite, TiledBackground "forgets" its new texture when the layout is restarted.

  • How is it that you can load different images into multiple instances of the same TiledBackground object, and they each display their own image? But with a Sprite, loading a new image replaces it in all other instances.

    Does each TiledBackground instance have its own texture?

  • You can use a single array to store all these JSONs.

  • Well, yes, if you have two nested For Each loops, then you can use "System evaluate expression". Because inside of these loops you already have a single instance of Cards and a single instance of CardFamily picked.

    Here's my code now and it seems to be working perfectly. Do you see any issues?

    It looks good to me!

  • Try adding "For each Cards" condition to that event.

    Also, why are you using UIDs as key names? UID is not a reliable identifier. If cards are created in runtime, their UIDs may be different every time the game or layout is restarted.

    If you are placing cards manually in the layout editor, their UIDs will stay the same until the card is destroyed. Still I suggest using an instance variable as a unique card ID.

  • Exact same way I did it for Cards.GetObjectType only that one didn't need to start with str()

    The code on your screenshot works fine for me.

    Are you using "Set key" or "Add key" action? Use "Add key", because "Set key" only works if the key already exists.

  • Yes, it's better. But you don't need to add turret targets on every tick. You can do it once on start of the layout.

    Also you can replace these two conditions

    with

    Army_Undead_R pick nearest to (Unit_Knight_L.x, Unit_Knight_L.y)
    
  • I tried implementing your suggestion as well as the approach shown in my screenshot, but I’m getting the same results either way.

    Maybe you haven't encountered the situation when your code would fail.

    ChatGPT gave you the right answer, but to the wrong question :)

    I made a demo which should explain my point:

    dropbox.com/scl/fi/9smxavmssevbkoaf9vx41/CardPicking.c3p

    By the way, I tried asking Grok and ChatGPT the same tricky questions about C3 and Grok appears to be smarter.

  • When I killed the enemy, I deactivated the enemy movement group

    This is not a good idea, it will only work if you have a single enemy. With multiple enemies disabling the event group will disable it for all enemies.

  • a very large image offset can start to exhibit rendering glitches

    From what I can see, the offset is not that large. 1 pixel per tick, at 60 fps for 120 seconds = only ~7200 px