#include maps\_utility; 
#include common_scripts\utility; 
#include maps\_zombiemode_utility;
/*
#####################
by: M.A.K.E C E N T S
#####################
Script:
Place the following
    maps\_mc_door_ee::init();
under
    maps\_zombiemode::main();
in your nazi_zombie_mapname.gsc

Radiant: (NR means Not Required, but you can add if you want something to happen upon damage or trigger or action)
make script_models to shoot with kvps:
	targetname > teddies
	script_fxid > NR
	script_sound > NR
mdke door script_model with these kvps:
	targetname > teddies_door
	script_vector > NR
	target > NR
	script_fxid > NR
	script_sound > NR
###############################################################################
*/
init(){
	level.door_ee = [];
	level.deletedoor = 1;//0 = no, and 1 = yes
	thread EE_Setup("slurmcan1");//targetname of the script_models, use this and add _door to targetname of door, teddies_door
}
EE_Setup(mykvp){
	if(!isdefined(mykvp)) return;
	ees = getentarray(mykvp,"targetname");
	if(ees.size<1){
		iprintlnbold("No script model has targetname kvp of " + mykvp);
		return;
	}
	level.door_ee[mykvp] = ees.size;
	for(i=0;i<ees.size;i++) ees[i] thread ShootMe();
	thread AllShot(mykvp);
}
ShootMe(){
	self SetCanDamage(true);
	self waittill("damage");	
	count = int(level.door_ee[self.targetname])-1;
	if(count<=0){
		level notify("all_shot_" + self.targetname);
	}else{
		level.door_ee[self.targetname] = count;
	}
	self thread DoAfterShot();
}
DoAfterShot(){
	if(isdefined(self.script_sound)) play_sound_at_pos(self.script_sound, self.origin);
	if(isdefined(self.script_fxid)) playfx (level._effect[self.script_fxid], self.origin);
    self delete();
}
AllShot(mykvp){
	sound = "door_slide_open";
	level waittill("all_shot_" + mykvp );
	doorPieces = getentarray(mykvp + "_door","targetname");
	soundPos = (0,0,0);
	for(i=0;i<doorPieces.size;i++){
		soundPos = doorPieces[i].origin;
		doorPieces[i] ConnectPaths();
		doorPieces[i] thread MovePiece();
	}
	if(isdefined(self.script_sound)) sound = self.script_sound;
	play_sound_at_pos( "door_slide_open", soundPos );
	if(isdefined(self.script_fxid)) playfx (level._effect[self.script_fxid], self.origin);
	if(isdefined(self.script_string)) flag_set(self.script_string);
}
MovePiece(){
	dest = (self.origin[0],self.origin[1],self.origin[2]+100);
	speed = 1;
	if(isdefined(self.target)) dest = getstruct(self.target,"targetname").origin;//can set struct for target of door pieces if you want
	if(isdefined(self.script_vector)) dest = self.origin - self.script_vector;//or just use script_vector
	if(isdefined(self.speed) && self.speed>=1) speed = self.speed;
	self moveto(dest, speed);
	wait(speed-.01);
	if(level.deletedoor) self delete();//uncomment if you want door to delete after
}