11 KiB
Event Commands
Defined in macros/scripts/events.asm and engine/overworld/scripting.asm:ScriptCommandTable.
Until this document is filled out, the G/S Scripting Compendium has descriptions for most of these commands. It was written for G/S binary hacking and not Crystal assembly hacking, so it's not 100% accurate for pokecrystal.
$00: scall script
$01: farscall script
$02: memcall script
$03: sjump script
$04: farsjump script
$05: memjump script
$06: ifequal byte, script
$07: ifnotequal byte, script
$08: iffalse script
$09: iftrue script
$0A: ifgreater byte, script
$0B: ifless byte, script
$0C: jumpstd std_script
$0D: callstd std_script
$0E: callasm asm
$0F: special special_pointer
$10: memcallasm asm
$11: checkmapscene map
$12: setmapscene map, scene_id
$13: checkscene
$14: setscene scene_id
$15: setval value
[wScriptVar] = value
$16: addval value
[wScriptVar] += value
$17: random value
$18: checkver
$19: readmem address
[wScriptVar] = [address]
$1A: writemem address
[address] = [wScriptVar]
$1B: loadmem address, value
[address] = value
$1C: readvar variable
[wScriptVar] = GetVarAction(variable)
$1D: writevar variable
GetVarAction(variable) = [wScriptVar]
$1E: loadvar variable, value
GetVarAction(variable) = value
$1F: giveitem item_id[, quantity=1]
$20: takeitem item_id[, quantity=1]
$21: checkitem item_id
$22: givemoney account, value
$23: takemoney account, value
$24: checkmoney account, value
$25: givecoins value
$26: takecoins value
$27: checkcoins value
$28: addcellnum contact_id
$29: delcellnum contact_id
$2A: checkcellnum contact_id
$2B: checktime time
$2C: checkpoke mon_id
$2D: givepoke mon_id, level[, item=0[, ot_name, nickname]]
$2E: giveegg mon_id, level
$2F: givepokemail pointer
$30: checkpokemail pointer
$31: checkevent event_flag
$32: clearevent event_flag
$33: setevent event_flag
$34: checkflag engine_flag
$35: clearflag engine_flag
$36: setflag engine_flag
$37: wildon
$38: wildoff
$39: xycompare pointer
$3A: warpmod warp_id, map
$3B: blackoutmod map
$3C: warp map, x, y
$3D: getmoney string_buffer, account
GetStringBuffer(string_buffer) = PrintNum(GetMoneyAccount(account))
$3E: getcoins string_buffer
GetStringBuffer(string_buffer) = PrintNum([wCoins])
$3F: getnum string_buffer
GetStringBuffer(string_buffer) = PrintNum([wScriptVar])
$40: getmonname string_buffer, mon_id
GetStringBuffer(string_buffer) = GetPokemonName(mon_id)
If mon_id = USE_SCRIPT_VAR, then it uses [wScriptVar] instead.
$41: getitemname string_buffer, item_id
GetStringBuffer(string_buffer) = GetItemName(item_id)
If item_id = USE_SCRIPT_VAR, then it uses [wScriptVar] instead.
$42: getcurlandmarkname string_buffer
GetStringBuffer(string_buffer) = GetLandmarkName(GetWorldMapLocation())
$43: gettrainername string_buffer, trainer_group, trainer_id
GetStringBuffer(string_buffer) = GetTrainerName(trainer_group, trainer_id)
$44: getstring string_buffer, text_pointer
GetStringBuffer(string_buffer) = CopyName1([wScriptBank], text_pointer)
$45: itemnotify
$46: pocketisfull
$47: opentext
$48: refreshscreen [dummy=0]
$49: closetext
$4A: writeunusedbyte byte
[wUnusedScriptByte] = byte
$4B: farwritetext text_pointer
$4C: writetext text_pointer
$4D: repeattext byte1, byte2
$4E: yesorno
$4F: loadmenu menu_header
$50: closewindow
$51: jumptextfaceplayer text_pointer
$52: farjumptext text_pointer
$53: jumptext text_pointer
$54: waitbutton
$55: promptbutton
$56: pokepic mon_id
$57: closepokepic
$58: _2dmenu
$59: verticalmenu
$5A: loadpikachudata
$5B: randomwildmon
$5C: loadtemptrainer
[wOtherTrainer] = [wTempTrainer]
$5D: loadwildmon mon_id, level
$5E: loadtrainer trainer_group, trainer_id
$5F: startbattle
$60: reloadmapafterbattle
$61: catchtutorial byte
$62: trainertext text_id
$63: trainerflagaction action
$64: winlosstext win_text_pointer, loss_text_pointer
$65: scripttalkafter
$66: endifjustbattled
$67: checkjustbattled
$68: setlasttalked object_id
$69: applymovement object_id, data_pointer
$6A: applymovementlasttalked data_pointer
$6B: faceplayer
$6C: faceobject object1, object2
$6D: variablesprite variable_sprite_id, sprite_id
$6E: disappear object_id
$6F: appear object_id
$70: follow object2, object1
$71: stopfollow
$72: moveobject object_id, x, y
$73: writeobjectxy object_id
$74: loademote emote_id
$75: showemote emote_id, object_id, length
$76: turnobject object_id, facing
$77: follownotexact object2, object1
$78: earthquake param
$79: changemapblocks blockdata_pointer
ChangeMap(blockdata_pointer)
$7A: changeblock x, y, block
$7B: reloadmap
$7C: reloadmappart
$7D: writecmdqueue queue_pointer
$7E: delcmdqueue byte
$7F: playmusic music_id
$80: encountermusic
$81: musicfadeout music_id, length
$82: playmapmusic
$83: dontrestartmapmusic
$84: cry mon_id
$85: playsound sfx_id
$86: waitsfx
$87: warpsound
$88: specialsound
$89: autoinput input_pointer
$8A: newloadmap which_method
$8B: pause length
$8C: deactivatefacing length
$8D: sdefer script
$8E: warpcheck
$8F: stopandsjump script
$90: endcallback
$91: end
$92: reloadend which_method
$93: endall
$94: pokemart mart_type, mart_id
$95: elevator floor_list
$96: trade trade_id
$97: askforphonenumber contact_id
$98: phonecall call_id
$99: hangup
$9A: describedecoration byte
$9B: fruittree tree_id
$9C: specialphonecall call_id
$9D: checkphonecall
$9E: verbosegiveitem item_id[, quantity=1]
$9F: verbosegiveitemvar item_id, variable
$A0: swarm swarm_id, map
$A1: halloffame
$A2: credits
$A3: warpfacing facing, map, x, y
$A4: battletowertext bttext_id
$A5: getlandmarkname string_buffer, landmark_id
GetStringBuffer(string_buffer) = GetLandmarkName(landmark_id)
$A6: gettrainerclassname string_buffer, trainer_group
GetStringBuffer(string_buffer) = GetName(TRAINER_NAME, trainer_group)
$A7: getname string_buffer, type, id
GetStringBuffer(string_buffer) = GetName(type, id)