コード例 #1
0
ファイル: pedestal.c プロジェクト: LibreGames/edgar
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';
	}
}
コード例 #2
0
ファイル: robot.c プロジェクト: revcozmo/edgar
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);
	}
}