public RbyTrainer(RbySprite baseSprite, ReadStream data) : base(baseSprite, data) { TrainerClass = Map.Game.TrainerClasses[data.u8()]; TeamIndex = (byte)(data.u8() - 1); int textPointer = Map.Bank << 16 | Map.TextPointer + (TextId - 1) * 2; int scriptPointer = Map.Bank << 16 | Map.Game.ROM.u16le(textPointer); int headerPointer = Map.Bank << 16 | Map.Game.ROM.u16le(scriptPointer + 2); if (baseSprite.Map.Id == 166 || TrainerClass == null || TrainerClass.Name.Contains("RIVAL")) { return; } ReadStream header = Map.Game.ROM.From(headerPointer); EventFlagBit = header.u8(); SightRange = (byte)(header.u8() >> 4); EventFlagAddress = header.u16le(); if (EventFlagBit >= 8) { EventFlagBit -= 8; EventFlagAddress++; } }
public RbyTrainer(RbySprite baseSprite, ByteStream data) : base(baseSprite, data) { TrainerClass = Map.Game.TrainerClasses[data.u8()]; TeamIndex = (byte)(data.u8() - 1); int textPointer = Map.Bank << 16 | Map.TextPointer + (TextId - 1) * 2; int scriptPointer = Map.Bank << 16 | Map.Game.ROM.u16le(textPointer); int headerPointer = Map.Bank << 16 | Map.Game.ROM.u16le(scriptPointer + 2); ByteStream header = Map.Game.ROM.From(headerPointer); EventFlagBit = header.u8(); SightRange = (byte)(header.u8() >> 4); EventFlagAddress = header.u16le(); }