Example #1
0
static void G_UseEdict_f (void)
{
	Edict* e;
	int i;

	if (gi.Cmd_Argc() < 2) {
		gi.DPrintf("Usage: %s <entnum>\n", gi.Cmd_Argv(0));
		return;
	}

	i = atoi(gi.Cmd_Argv(1));
	if (!G_EdictsIsValidNum(i)) {
		gi.DPrintf("No entity with number %i\n", i);
		return;
	}

	e = G_EdictsGetByNum(i);
	if (!e->use) {
		gi.DPrintf("No use function for entity %s\n", e->classname);
		return;
	}

	gi.DPrintf("Call use function for %s\n", e->classname);
	e->use(e, nullptr);
}
Example #2
0
/**
 * @brief Mission trigger use function
 */
bool G_MissionUse (Edict* self, Edict* activator)
{
	Edict* target = G_EdictsFindTargetEntity(self->target);
	if (!target) {
		gi.DPrintf("Target '%s' wasn't found for misc_mission\n", self->target);
		G_FreeEdict(self);
		return false;
	}

	if (target->destroy) {
		/* set this to zero to determine that this is a triggered destroy call */
		target->HP = 0;
		target->destroy(target);
		/* freed when the level changes */
		self->target = nullptr;
		self->use = nullptr;
	} else if (target->use)
		target->use(target, activator);

	return true;
}