The scripting command TakeOrGive has the opcode (0x1D).
- Byte - Take Type
- Byte - Take Value (1, 2, or 4 bytes, depending on type, mostly 1)
- Byte - Give Type
- Byte - Give Value (1, 2, or 4 bytes, depending on type, mostly 1)
Uses the arguments as an If to check character stats before giving something.
Gives to the most recently "selected" character. Characters can be selected either with the WhoWill, SelRndChar, or SetChar command. By default, the first character is selected. If the selected character is set to 0 (via SetChar with a 0 argument) then all characters lose or get the specified thing. ie, to give all characters 60000 experience requires two lines:
0f 00 // select all characters 0c 00 00 10 60 ea 00 00 // give 60000 experience to selected character (ie, all)
It's not entirely obvious what is given. More investigation would be required.
While 0x0C, 0x1C, 0x1D, and 0x26 opcodes all execute the TakeGive command, there are differences which may warrant each to have their own page.
TODO: Do we want to do serious investigation, or make an executive decision and say "don't use this"? Easier to not use. Ever.