Massassi Forums Logo

This is the static archive of the Massassi Forums. The forums are closed indefinitely. Thanks for all the memories!

You can also download Super Old Archived Message Boards from when Massassi first started.

"View" counts are as of the day the forums were archived, and will no longer increase.

ForumsCog Forum → How can I make an actor respawn if its been killed?
How can I make an actor respawn if its been killed?
2001-07-28, 9:10 AM #1
I have some creatures in my level and I would like them to respawn if they get killed. How can I set it up so that they will respawn?
2001-07-28, 12:17 PM #2
Here's a nice little cog. You set a ghost position, tell it what template to make there, and when it says how many alive at once, you put 1. So this cog makes the AI respawn at the same ghost position if thats what your looking for...

Code:
#
#The thing is the number of the ghost object where the enemy is spawned
#
#The template is the enemy you want to use
#
#The gen_num is how many total enemies you want before the cog stops respawning them
#
#The max_alive is how many enemies are alive at once
#
#Jedi Knight Cog Script
#
# 06_generator.cog
#
# Cribbed from generic generator, for use in last tower room
#
# [RD]
#
# (C) 1997 LucasArts Entertainment Co. All Rights Reserved		
# ========================================================================================
					    
symbols

message	startup
message	user0
message	timer
message	pulse
message	killed	mask=0xfff

thing		generator_pos		desc=generator_ghost

template	enemy_tpl			desc=enemy_to_generate

int		initial_delay=1.0		local		desc=initial_delay
int		generate_delay=5.0	local		desc=generate_delay
int		min_dist=0.0		local		desc=min_distance
int		max_dist=1000.0		local		desc=max_distance

float		distance=1.0	local

cog		squadmaker		local

int		enemy			local
int		cur_num=0		local
int		cur_alive=0		local
int		generate_num	
int		max_alive				desc=max_alive

end

# ========================================================================================

code

startup:
	// if initial_delay == -1 then the generator will be started by SendMessage
	// user0 from another COG. Much like the WAKEUP message in DF...
	if(initial_delay != -1) SetTimer(initial_delay);
	Return;

# ........................................................................................

user0:	
// FIXME!! remove next line when parsing bug is corrected
	enemy = enemy;
	// fall through on purpose

# ........................................................................................

timer:
	SetPulse(generate_delay);
	// fall through on purpose

# ........................................................................................

pulse:
	if((cur_alive < max_alive))
	{
		distance = VectorDist(GetThingPos(generator_pos), GetThingPos(GetLocalPlayerThing()));
		if((distance >= min_dist) && (distance <= max_dist))
		{
			if(IsThingVisible(generator_pos)==0)
			{
				enemy = CreateThing(enemy_tpl, generator_pos);
				CaptureThing(enemy);

				cur_num   = cur_num + 1;
				cur_alive = cur_alive + 1;

				// If we have generated enough enemies, end the pulse
				if(cur_num >= generate_num) SetPulse(0);
			}
		} 
	}
	return;

# ........................................................................................

killed:
	cur_alive = cur_alive - 1;
	SendMessage(squadmaker, user0);
	return;

end


------------------
"I hear You speak and I obey
I walked away from the grave
I will never be the same
I gave my life away"

The Bible is the only religious book to actually state that it is the truth and the only way. Thats why I'm a Christian.

_-=MaTRiX=-_
In my mind I can see your face, as Your love pours down in a shower of grace. Some people tell me that Your just a dream, but my faith is the evidence of things unseen.

Once upon a time God spoke to me, and then I was never the same again.

_-=MaTRiX=-_
2001-07-28, 12:38 PM #3
This should do it.

Thanks a lot.

↑ Up to the top!