Yes, this is for the Celebi thing. As far as I understand (and I've looked into this to check that it wasn't only made for the Japanese versions of GSC), all that is required is the GS ball before going to the Ilex shrine. I have heard of people gamesharking the GS ball into their inventory to be able to activate it, which seems to indicate that the GS ball is sufficient to fulfill the Celebi criteria.
Just googled and found this video:
https://www.youtube.com/watch?v=Gd_O9IaQ4MA
According to its description, you also need to use gameshark code "01C089DA" for making Kurt accept the GS Ball before it can be hold at the shrine to make Celebi event occur. What this gameshark code does is to write "C0" in ram address $DA89. 0xC0 in binary is 1100 0000 which means that it sets 2 highest bits of the byte in that address. Either one of these bits have to be set for making it possible to talk to Kurt while holding the GS Ball to activate the Celebi shrine event.
With the script data, if it is a gift (which seems like the easier option), couldn't I get it to cross reference with your inventory and feed back a "You've no room for this" message if it is full? If I am changing the event so that he is giving me an item instead of vanishing, surely this would work? If you have no room, you simply go back post-credits so he can give you the item.
Yeah but in this case as well, you need to reserve a flag for the case when you beat him and don't have room for the item. So you need additional flag for this event.
I don't know where there are usable flags in Crystal you could use without doing some tricks with the existing flags (like using two flags for one event which is sometimes doable). But this is not a big problem to deal with when you know what the flags do (= how they point to bits in ram).
I apologise for my lack of knowledge, but what scripting would be required for him giving the GS ball? I've not done anything to do with handing over items so not entirely sure what to do.
Thanks for your response!
You can use a script editor called pksv for scripting, but what you would have to do would be knowing how to locate his script in one way or another (the map editor you use may show the exact location of the script data or a pointer to it), repoint all or a part of the script data elsewhere where there is room for writing new stuff and write script codes for giving the item and checking whether the player has room for the item. If there is no room, skip script code for setting a flag for "GS ball being received".
Scripting codes for GSC can be found here:
https://hax.iimarck.us/files/scriptingcodes_eng.htm and here I have written most of the codes in pksv language:
https://hax.iimarck.us/topic/1173/
In this case, you'll need at least giveitem (1F) or verbosegiveitem (9D), setbit1 (31), if false/true (08/09), and could possibly use code 16 for adding "40" or "80" to the value in $DA89 for activating the event with Kurt. "40" stands for the second highest bit and "80" for the highest bit in one byte. If second highest bit would somehow be already set, adding "40" would mess things up though. But you could do this in this kind of a situation. A better way to do this would be by calling a simple asm routine with code 3callasm (0E) to set the highest of second highest bit in $DA89.
So there is a lot of stuff involved in doing this actually. I personally had been hacking crystal for a few years before I got the hang of scripting (although I was pretty lazy trying to learn back then). But to get that far and really understand how you can accomplish something, knowing how pointers work is essential and understanding something about ram, event structure and such doesn't hurt either.
Anyway, in case you feel like talking about this more, you could sent me for instance PM. :)