Example #1
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;
}
Example #2
0
static void G_DestroyEdict_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))
		return;

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

	gi.DPrintf("Call destroy function for %s\n", e->classname);
	e->destroy(e);
}