Thanks for the answers. The third question is now settled, I will just copy everything to another struct when created as it's better solution in long run.


However wait(-5) really doesn't meet my needs as I need to check time within a loop that holds several other thing at the same time (maybe the example was not really good). For an example (At the bottom of the code):
Code:
while(my.status == attacking)
		{
						trace_result = c_trace(vector(my.x,my.y,my.z),vector(my.x,my.y,my.z-20),IGNORE_ME | IGNORE_PASSABLE | IGNORE_SPRITES | IGNORE_FLAG2 | IGNORE_CONTENT | IGNORE_MODELS);
			if(trace_result == 0)
			{
				c_move(my,nullvector,vector(0,0,(-1*mod->zone_VAR_gravity) + my.gravity_mod),IGNORE_ME | IGNORE_PASSABLE | IGNORE_SPRITES | IGNORE_FLAG2 | IGNORE_CONTENT);
			}
			else
			{
				if(trace_result >=  2)
				{
					c_move(my,nullvector,vector(0,0,(-1*mod->zone_VAR_gravity) + my.gravity_mod),IGNORE_ME | IGNORE_PASSABLE | IGNORE_SPRITES | IGNORE_FLAG2 | IGNORE_CONTENT);			
				}
			}
			if(main_tar == NULL)
			{
				//If main_tar is null this NPC is attacked before it scanned
				//Adn we pass pointer to attacker by combat skill
				main_tar = my.combat;
				my.combat = 0;
			}
			//if(c_trace)
			vec_set(temp,me.x);
			//We have a clear look to the player
			if(vec_dist(my.x,main_tar.x) > 100)
			{
				my.status = evade;
				break;
			}
			if(vec_dist(my.x,main_tar.x) > 6)
			{
				you = main_tar;
				if(c_trace(vector(my.x,my.y,my.z),vector(my.x+10*cos(my.pan),my.y+10*sin(my.pan),my.z),IGNORE_ME | IGNORE_SPRITES | IGNORE_PASSABLE | IGNORE_FLAG2 | IGNORE_YOU | IGNORE_WORLD | IGNORE_MAPS | IGNORE_CONTENT) == 0)
				{
					if(walk_anim >= 100)
					walk_anim = 0;
					else
					walk_anim +=4.5*time_step;
					ent_animate(me,"walk",walk_anim,ANM_CYCLE);
					c_move(me,vector(3*time_step,0,0),nullvector,GLIDE | IGNORE_SPRITES | IGNORE_PASSABLE | IGNORE_FLAG2 | IGNORE_CONTENT);
					vec_set(temp,main_tar.x); 
					vec_sub(temp,my.x);
					vec_to_angle(my.pan,temp);
				}
				else
				{
					vec_set(target_pos,vector(main_tar.x,main_tar.y+50,main_tar.z));
					my.status = re_routing;	
					break;		
				}
			}
			else
			{
				//main_tar = you;
				if(u_hea > 0 && (total_frames %80) == chr->atk_speed)
				{
					AI_hit_system(mod,chr,chr_you,me,main_tar);
				}				
			}
		wait(1);	
		}



as the same loop holds also movemtn waith -5 would mean the movement becoming laggier. It's not really a big deal yet, one while loop at the beginning of the development is just a small program slower. However when I consider that the plan was / is to have over 20-60 enemies on the screen max then that one loop would mean a lot more. Right?