Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
- {
- struct MapObject2 *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
- u8 var;
- u16 r3;
- u16 r2;
- //asm("nop"::"r"(b));
- if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
- return 16;
- //_0805ACCE
- mapObj = (struct MapObject2 *)&gMapObjects[var];
- npc_clear_ids_and_state((struct MapObject *)mapObj);
- r3 = template->x + 7;
- r2 = template->y + 7;
- mapObj->active = TRUE;
- mapObj->mapobj_bit_2 = TRUE;
- mapObj->graphicsId = template->graphicsId;
- if(CheckSpeedchoiceOption(SPINNERS, HELL) == TRUE && gPlayerAvatar.mapObjectId != var && (template->unkC == 1 || template->unkC == 3))
- mapObj->animPattern = 1;
- else
- mapObj->animPattern = template->movementType;
- mapObj->localId = template->localId;
- mapObj->mapNum = b;
- mapObj->mapGroup = c;
- mapObj->coords1.x = r3;
- mapObj->coords1.y = r2;
- mapObj->coords2.x = r3;
- mapObj->coords2.y = r2;
- mapObj->coords3.x = r3;
- mapObj->coords3.y = r2;
- mapObj->mapobj_unk_0B_0 = template->elevation;
- mapObj->elevation = template->elevation;
- mapObj->mapobj_unk_19 = template->unkA_0;
- mapObj->mapobj_unk_19b = template->unkA_4;
- if(CheckSpeedchoiceOption(SPINNERS, HELL) == TRUE && gPlayerAvatar.mapObjectId != var && (template->unkC == 1 || template->unkC == 3))
- mapObj->trainerType = 1;
- else
- mapObj->trainerType = template->unkC;
- if(CheckSpeedchoiceOption(MAXVISION, OFF_2) == FALSE && gPlayerAvatar.mapObjectId != var && (template->unkC == 1 || template->unkC == 3))
- mapObj->trainerRange_berryTreeId = MAX_VISION_RANGE;
- else
- mapObj->trainerRange_berryTreeId = template->unkE;
- mapObj->mapobj_unk_20 = gUnknown_0836DC09[mapObj->animPattern];
- FieldObjectSetDirection((struct MapObject *)mapObj, mapObj->mapobj_unk_20);
- FieldObjectHandleDynamicGraphicsId(mapObj);
- //asm("":::"r5","r6");
- if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
- {
- if (mapObj->mapobj_unk_19 == 0)
- mapObj->mapobj_unk_19++;
- if (mapObj->mapobj_unk_19b == 0)
- mapObj->mapobj_unk_19b++;
- }
- return var;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement