static void addStatue(int val) { Entity *e; if (self->target == NULL) { e = getCurrentInventoryItem(); if (e == NULL || strstr(e->name, "_statue") == NULL) { runScript("statue_required"); } else { STRNCPY(self->objectiveName, e->objectiveName, sizeof(e->objectiveName)); e = addEntity(*e, self->x, self->y); self->target = e; self->target->x = self->x + self->w / 2; self->target->x -= self->target->w / 2; self->target->y = self->y - self->target->h; self->target->flags |= FLY; self->target->touch = NULL; self->target->action = &statueWait; removeInventoryItemByObjectiveName(e->objectiveName); validate(); } } else { e = addEntity(*self->target, 0, 0); addToInventory(e); self->target->inUse = FALSE; self->target = NULL; self->objectiveName[0] = '\0'; } }
static void activate(int val) { Entity *e = getCurrentInventoryItem(); if (e == NULL || strcmpignorecase(e->name, "item/instruction_card") != 0) { runScript("instruction_card"); } else if (strlen(e->requires) == 0) { runScript("no_instructions"); } else { runScript("robot_start"); e = addEntity(*e, self->x, self->y); e->touch = NULL; e->flags |= NO_DRAW; removeInventoryItemByObjectiveName(e->objectiveName); self->target = e; self->action = &processNextInstruction; self->active = TRUE; self->mental = 0; setPlayerLocked(TRUE); centerMapOnEntity(self); } }