Beispiel #1
0
/*----------------------------------------------------------------------------*
*							  물결형 파티클 (피어싱에서 사용)
*-----------------------------------------------------------------------------*/	
int AssaParticle_Wave(POINT3D *pPosi , char *FileName ,int Size)
{
	//현제 피어싱에만 사용된다  (Size인자는 알파값이다 )귀찮아서 안바꿨다 ㅡ,.ㅡ
	
	for(int i = 0; i < 1 ; i++){                  
		Assa = SetAssaEffect(GetRandomPos(31-Size,32-Size),"star05B_03.bmp",0,pPosi,0);       
		cAssaEffect[Assa]->Size.w = 4000;//-(Size*(4000/30)); 
		cAssaEffect[Assa]->ReSize.w = 600;//-(Size*(600/30));
		cAssaEffect[Assa]->ReSize.h = cAssaEffect[Assa]->ReSize.w;
		cAssaEffect[Assa]->MOVECODE = ASSA_INCRESIZE;
		cAssaEffect[Assa]->FACEY = GetRandomPos(0,4096);

		//cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->Face.Transparency = 255-(Size*8);
	}
	
	for(int i = 0; i < 1 ; i++){            
		Assa = SetAssaEffect(GetRandomPos(31-Size,32-Size),"twist.bmp",0,pPosi,0);       
		cAssaEffect[Assa]->Size.w = 1000;//-(Size*(1000/30)); 
		cAssaEffect[Assa]->ReSize.w = 600;//-(Size*(600/30));
		cAssaEffect[Assa]->ReSize.h = cAssaEffect[Assa]->ReSize.w;
		cAssaEffect[Assa]->MOVECODE = ASSA_INCRESIZE;
		cAssaEffect[Assa]->FACEY = GetRandomPos(0,4096);
		cAssaEffect[Assa]->Face.Transparency = 255-(Size*8);
		
	}

	return TRUE;
}
Beispiel #2
0
/*----------------------------------------------------------------------------*
*							   Wide
*-----------------------------------------------------------------------------*/	
int AssaParticle_Wide(POINT3D *pPosi , char *FileName ,int Num , int Time)
{
	for(int i = 0 ; i < Num ; i++){
		//선
		Assa = SetAssaEffect(100,FileName,0,pPosi,0);             
		cAssaEffect[Assa]->Size.w = 1000; 
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_ANGLE_SPEED;
		cAssaEffect[Assa]->MoveSpeed.z = 400;
		cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
		cAssaEffect[Assa]->StartPosi.z = 256*2;
		AssaSetStartPosi(cAssaEffect[Assa]);
		cAssaEffect[Assa]->cAssaTrace->SetLength(50); //연결길이를 잡는다
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->Time = Time;


		//파티클
		/*
		Assa = SetAssaEffect(120,FileName,0,pPosi,0);      
		AssaGetAniFileMat(cAssaEffect[Assa]);
		cAssaEffect[Assa]->AniDelayTime = GetRandomPos(4,10);
		cAssaEffect[Assa]->AniCount = GetRandomPos(0,cAssaEffect[Assa]->AniMaxCount);
		cAssaEffect[Assa]->Size.w = 1000; 
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_ANGLE_SPEED;
		cAssaEffect[Assa]->MoveSpeed.z = 256;
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->Time = Time;
		*/
	}
	return TRUE;
}
Beispiel #3
0
/*----------------------------------------------------------------------------*
*				       PIERCING Paticle Aura
*-----------------------------------------------------------------------------*/	
int AssaParticle_Piercing_Aura(cASSAEFFECT *pEffect)
{

	for(int i = 0; i < 100 ; i++){            
		Assa = SetAssaEffect(100,"line.bmp",0,&pEffect->CenterPosi,0);              
		cAssaEffect[Assa]->Size.w = 250;
		cAssaEffect[Assa]->GatherSpeed = 40;
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_GATHER;
		cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE;
		cAssaEffect[Assa]->RDistance.z = GetRandomPos(256*16,256*16*2);
		cAssaEffect[Assa]->RAngle = GetRandomPos(0,4096);
		cAssaEffect[Assa]->StartPosi.z = cAssaEffect[Assa]->RDistance.z;
		AssaSetStartPosi(cAssaEffect[Assa]);
		cAssaEffect[Assa]->Time = GetRandomPos(0,-300);

		//각에따른 방향으로 Face를 Scale한다 
		GetMoveLocation(  cAssaEffect[Assa]->StartPosi.x, cAssaEffect[Assa]->StartPosi.y,cAssaEffect[Assa]->StartPosi.z*2 , cAssaEffect[Assa]->Angle.x, cAssaEffect[Assa]->Angle.y, 0 );
		cAssaEffect[Assa]->ScalePosi.x = GeoResult_X/2;
		cAssaEffect[Assa]->ScalePosi.y = GeoResult_Y/2;
		cAssaEffect[Assa]->ScalePosi.z = GeoResult_Z/2;

	}

	return TRUE;
} 
Beispiel #4
0
/*----------------------------------------------------------------------------*
*				          Particle After Image (날치기 잔상) (에너쥐 쉴터에서 사용중)
*-----------------------------------------------------------------------------*/	
int AssaParticle_After_Image(POINT3D *Posi , char *FileName , int Range , int Time)
{
	//파티클
	/*
	Assa = SetAssaEffect(70,FileName,0,Posi,0);                                 
	cAssaEffect[Assa]->Size.w = 1500;  
	cAssaEffect[Assa]->StartPosi.z = GetRandomPos(16*Range,16*Range*2); 
	AssaSetStartPosi(cAssaEffect[Assa]);
	cAssaEffect[Assa]->Time = Time;
	cAssaEffect[Assa]->MOVECODE = ASSA_DECRESIZE;
	cAssaEffect[Assa]->ReSize.w = 10;
	cAssaEffect[Assa]->ReSize.h = cAssaEffect[Assa]->ReSize.w;
	*/

	//요건 선형 파티클 
	for(int i = 0 ; i < 3 ; i++){              
		Assa = SetAssaEffect(10,"flare.tga",0,Posi,0);      
		cAssaEffect[Assa]->Size.w = GetRandomPos(6000,7000); 
		cAssaEffect[Assa]->Size.h = GetRandomPos(300,500); 
		cAssaEffect[Assa]->FACEY  = (i+1)*(4096/6);
		cAssaEffect[Assa]->NotFadeIn = 1;
		//cAssaEffect[Assa]->ZposiFlag = 1;
		cAssaEffect[Assa]->Face.r = 0;
		cAssaEffect[Assa]->Face.g = 255;
		cAssaEffect[Assa]->Face.b = 255;
	}

	return TRUE;
}
Beispiel #5
0
/*----------------------------------------------------------------------------*
*				       WINDY Paticle 
*-----------------------------------------------------------------------------*/	
int AssaParticle_Windy(cASSAEFFECT *pEffect)
{
	float Temp = ((float)pEffect->Time-45.0f)/15.0f;              
	//원형이미지 
	Assa = SetAssaEffect(30,"star05Y_03.bmp",pEffect->pChar,0,0);                               
	AssaSearchWeaponPos(pEffect->pChar,&cAssaEffect[Assa]->Posi,Temp);            
	//AssaSearchWeaponPos(pEffect->pChar,&cAssaEffect[Assa]->Posi,1.0f);            
	cAssaEffect[Assa]->Size.w = 2000; 
	cAssaEffect[Assa]->Face.Transparency = 100;
	//cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_WINDY;
	//cAssaEffect[Assa]->Face.r = 255;
	//cAssaEffect[Assa]->Face.g = 150;
	//cAssaEffect[Assa]->Face.b = 0;

	//선형이미지 
	/*
	Assa = SetAssaEffect(40,"star06Y_04.bmp",0,&pEffect->Posi,0);      
	AssaSearchWeaponPos(pEffect->pChar,&cAssaEffect[Assa]->Posi,Temp);            
	cAssaEffect[Assa]->Size.w = GetRandomPos(1000,2000); 
	cAssaEffect[Assa]->Size.h = GetRandomPos(400,1000); 
	cAssaEffect[Assa]->FACEY  = GetRandomPos(0,4096);
	cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_WINDY;
	cAssaEffect[Assa]->Face.Transparency = 100;
	*/
	

	if((pEffect->Time % 3) == 0 )
		AssaParticle_RisingParticleContinue(&cAssaEffect[Assa]->Posi,"star01Y_02.bmp",300,128,GetRandomPos(20,80));
	//cAssaEffect[Assa]->Face.r = 255;
	//cAssaEffect[Assa]->Face.g = 150;
	//cAssaEffect[Assa]->Face.b = 0;

	return TRUE;
}
Beispiel #6
0
/*----------------------------------------------------------------------------*
*							퍼지는 Face
*-----------------------------------------------------------------------------*/	
int AssaParticle_WideFace(POINT3D *pPosi , char *FileName , int Size)
{
	Assa = SetAssaEffect(40,FileName,0,pPosi,0);                    
	cAssaEffect[Assa]->Size.w = Size; 
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_WORLD;
	cAssaEffect[Assa]->MOVECODE = ASSA_INCRESIZE;
	cAssaEffect[Assa]->ReSize.w = 200;
	cAssaEffect[Assa]->ReSize.h = cAssaEffect[Assa]->ReSize.w;

	return TRUE;
}
Beispiel #7
0
/*----------------------------------------------------------------------------*
*				       WINDY Paticle 
*-----------------------------------------------------------------------------*/	
int AssaParticle_Holy_Reflection(cASSAEFFECT *pEffect)
{
	//원형이미지 
	Assa = SetAssaEffect(GetRandomPos(80,100),"star01M_04.bmp",0,&pEffect->Posi,0);     
	AssaSearchWeaponPos(pEffect->pChar,&cAssaEffect[Assa]->Posi,1);            
	cAssaEffect[Assa]->Size.w = GetRandomPos(500,1000);
	cAssaEffect[Assa]->MoveSpeed.y = rand()%50;
	AssaGetCirclePosi(cAssaEffect[Assa],GetRandomPos(0,64*10),GetRandomPos(0,4096));
	cAssaEffect[Assa]->MOVECODE = ASSA_MOVE;
	return TRUE;
}
Beispiel #8
0
/*----------------------------------------------------------------------------*
*							   BALLLINGT GATHER 
*-----------------------------------------------------------------------------*/	
int AssaParticle_BALLLIGHT_GATHER(POINT3D *pPosi , char *FileName )
{
	Assa = SetAssaEffect(60,FileName,0,pPosi,0);                    
	cAssaEffect[Assa]->Size.w = 500;  
	cAssaEffect[Assa]->GatherSpeed = 30;
	cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_GATHER;
	//cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
	//cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_WORLD;
    //cAssaEffect[Assa]->cAssaTrace->SetLength(20); //연결길이를 잡는다
	cAssaEffect[Assa]->StartPosi.z = 256*8;
	AssaSetStartPosi(cAssaEffect[Assa]);
	return TRUE;
}
Beispiel #9
0
/*----------------------------------------------------------------------------*
*							분출형 파티클 
*-----------------------------------------------------------------------------*/	
int AssaParticle_Spread(POINT3D *pPosi , char *FileName ) 
{
	Assa = SetAssaEffect(70,FileName,0,pPosi,0);                   
	cAssaEffect[Assa]->Size.w = 500;  
	cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_SPREAD;
	cAssaEffect[Assa]->RAngle = rand()%4096;
	cAssaEffect[Assa]->RDistance.z = 64;
	cAssaEffect[Assa]->Gravity = 10;
	cAssaEffect[Assa]->MoveSpeed.y = 50;
	cAssaEffect[Assa]->NotFadeIn = 1;

	return TRUE;

}
Beispiel #10
0
/*----------------------------------------------------------------------------*
*							   BALLL PARTICLE RISING 
*-----------------------------------------------------------------------------*/	
int AssaParticle_RisingParticleContinue(POINT3D *pPosi , char *FileName ,int Size ,int Range , int SpeedY)
{ 
	Assa = SetAssaEffect(GetRandomPos(50,70),FileName,0,pPosi,0);   
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = cAssaEffect[Assa]->Max_Time/7;
	cAssaEffect[Assa]->AniCount = GetRandomPos(0,cAssaEffect[Assa]->AniMaxCount);
	cAssaEffect[Assa]->Size.w = GetRandomPos(Size-200,Size+200);
	cAssaEffect[Assa]->MoveSpeed.y = rand()%50+SpeedY;
	AssaGetCirclePosi(cAssaEffect[Assa],GetRandomPos(0,Range*10),GetRandomPos(0,4096));
	cAssaEffect[Assa]->MOVECODE = ASSA_MOVE;
	cAssaEffect[Assa]->NotFadeIn = 1;

	return TRUE;
}
void SkillMetalionSphereDefence(POINT3D *curPos, POINT3D *desPos, bool flag)
{
	g_NewParticleMgr.Start("magneticShot", *curPos);
	if(flag)
	{
		g_NewParticleMgr.Start("magneticShot", *desPos);
		SetDynLight( desPos->x, desPos->y, desPos->z, 255, 255, 255, 255, 100, 3);
	}

	Assa = SetAssaEffect(100,"spark01_01.bmp",0,curPos,0);
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 3;
	cAssaEffect[Assa]->Face.r = 150;
	cAssaEffect[Assa]->Face.g = 255;
	cAssaEffect[Assa]->Face.b = 150;
	cAssaEffect[Assa]->Face.Transparency = 255;
	cAssaEffect[Assa]->Size.w = 5000;
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE; 
	
	cAssaEffect[Assa]->ScalePosi.x = desPos->x - curPos->x;
	cAssaEffect[Assa]->ScalePosi.y = desPos->y - curPos->y;
	cAssaEffect[Assa]->ScalePosi.z = desPos->z - curPos->z;

	Assa = SetAssaEffect(100,"spark01_01.bmp",0,curPos,0);
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 3;
	cAssaEffect[Assa]->Face.r = 150;
	cAssaEffect[Assa]->Face.g = 255;
	cAssaEffect[Assa]->Face.b = 150;
	cAssaEffect[Assa]->Face.Transparency = 255;
	cAssaEffect[Assa]->Size.w = 5000;
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE; 
	
	cAssaEffect[Assa]->ScalePosi.x = desPos->x - curPos->x;
	cAssaEffect[Assa]->ScalePosi.y = desPos->y - curPos->y;
	cAssaEffect[Assa]->ScalePosi.z = desPos->z - curPos->z;
}
Beispiel #12
0
/*----------------------------------------------------------------------------*
*				          Area   Particle 
*-----------------------------------------------------------------------------*/	
int AssaParticle_Area_Particle(POINT3D *Posi , char *FileName , int Range , int Time)
{
	for(int i = 0 ; i < 10 ; i++){ 
		Assa = SetAssaEffect(100,FileName,0,Posi,0);                   
		cAssaEffect[Assa]->Size.w = 1000;  
		AssaGetAniFileMat(cAssaEffect[Assa]);
		cAssaEffect[Assa]->AniCount = GetRandomPos(0,cAssaEffect[Assa]->AniMaxCount);
		cAssaEffect[Assa]->AniReverse = 1;
		cAssaEffect[Assa]->AniDelayTime = GetRandomPos(4,8);
		cAssaEffect[Assa]->StartPosi.z = GetRandomPos(256,256*Range*2);
		AssaSetStartPosi(cAssaEffect[Assa]);
		cAssaEffect[Assa]->Time = Time;
	}
	return TRUE;
}
Beispiel #13
0
/*----------------------------------------------------------------------------*
*					        Light (현제 사용하지않음)
*-----------------------------------------------------------------------------*/	
int AssaParticle_Light(POINT3D *pPosi , char *FileName ,int Size , int Height , int Time)
{
	Assa = SetAssaEffect(40,FileName,0,pPosi,Height);           
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 25;
	cAssaEffect[Assa]->Size.w = Size;
	cAssaEffect[Assa]->ReSize.w = 600;
	cAssaEffect[Assa]->ReSize.h = cAssaEffect[Assa]->ReSize.w;
	cAssaEffect[Assa]->MOVECODE = ASSA_INCRESIZE;
	cAssaEffect[Assa]->Time = Time;
	cAssaEffect[Assa]->MOVECODE_List[0] = ASSA_DECRESIZE;
	cAssaEffect[Assa]->MOVECODE_Time[0] = 25;

	return TRUE;
}
Beispiel #14
0
/*----------------------------------------------------------------------------*
*							   BALLLINGT ROTATE 
*-----------------------------------------------------------------------------*/	
int AssaParticle_BALLLIGHT_ROTATE(POINT3D *pPosi , char *FileName ,int Range , int Speed)
{
	Assa = SetAssaEffect(50,FileName,0,pPosi,0);                           
	cAssaEffect[Assa]->Size.w = 500;    
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = GetRandomPos(10,15);
	cAssaEffect[Assa]->AniCount = GetRandomPos(0,cAssaEffect[Assa]->AniMaxCount);
	cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_RANDOM_ROTATE;
	//cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
	//cAssaEffect[Assa]->cAssaTrace->SetLength(20); //연결길이를 잡는다
	cAssaEffect[Assa]->Angle.x = GetRandomPos(0,4096);
	cAssaEffect[Assa]->Angle.y = GetRandomPos(0,4096);
	cAssaEffect[Assa]->MoveSpeed.z = Range;
	cAssaEffect[Assa]->RAngleSpeed = Speed;

	return TRUE;
}
Beispiel #15
0
/*----------------------------------------------------------------------------*
*							  상승 파티클 
*-----------------------------------------------------------------------------*/	
int AssaParticle_RisingLine(POINT3D *pPosi , char *FileName , int Size, int ContinueTime , int Range , int Count , int SpeedY)
{
	for(int i = 0; i < ContinueTime*7 ; i++){                       
		for(int j = 0; j < Count ; j++){    
		  Assa = SetAssaEffect(350-(SpeedY/2),FileName,0,pPosi,0);   
		  cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE;
		  cAssaEffect[Assa]->ScalePosi.y = GetRandomPos(Size*100,(Size+1)*100);
		  cAssaEffect[Assa]->Size.w = GetRandomPos(Size-500,Size+500);
		  cAssaEffect[Assa]->MoveSpeed.y = rand()%50+SpeedY;
		  cAssaEffect[Assa]->Posi.y -= 50*Size; //Scale시 좌표가 옮겨지는걸 보정
		  AssaGetCirclePosi(cAssaEffect[Assa],GetRandomPos(0,Range*10),GetRandomPos(0,4096));
		  cAssaEffect[Assa]->MOVECODE = ASSA_MOVE;
		  cAssaEffect[Assa]->Time = GetRandomPos(-10*i,-i*9)-j;
		}
	}
	return TRUE;
}
Beispiel #16
0
/*----------------------------------------------------------------------------*
*							  벨트형 파티클 
*-----------------------------------------------------------------------------*/	
int AssaParticle_RisingBelt(POINT3D *pPosi ,char *FileName,int ContinueTime , int SpeedY )
{ 

	int Temp = 1; 
	for(int i = 0 ; i < ContinueTime * 7 ; i++){               
		if((i%7)!=0)continue; 
		Assa = SetAssaEffect(250-(SpeedY/2),FileName,0,pPosi,0);                 
		cAssaEffect[Assa]->MOVECODE = ASSA_ANGLE_ROTATE | ASSA_MOVE;
		if(Temp == -1 )Temp = 1;
		else Temp = -1; 
		cAssaEffect[Assa]->ARotateSpeed.y = GetRandomPos(30,35)*Temp; 
		cAssaEffect[Assa]->MoveSpeed.y = SpeedY;
		cAssaEffect[Assa]->AniCount = rand()%5+5;
		cAssaEffect[Assa]->Time = GetRandomPos(-10*i,-i*9);
	}
	return TRUE; 
}
Beispiel #17
0
/*----------------------------------------------------------------------------*
*							   GATHER
*-----------------------------------------------------------------------------*/	
int AssaParticle_Gather(POINT3D *pPosi , char *FileName ,int Range , int Speed ,int Num)
{
	//세부설정은 되어있지않다 
	for(int j = 0; j < Num ; j++){       
		Assa = SetAssaEffect(300,FileName,0,pPosi,0);            
		cAssaEffect[Assa]->Size.w = 1000;  
		cAssaEffect[Assa]->GatherSpeed = 20;
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_GATHER;
		cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
		cAssaEffect[Assa]->cAssaTrace->SetLength(100); //연결길이를 잡는다
		cAssaEffect[Assa]->RDistance.z = GetRandomPos(Range*16,Range*16*2);
		cAssaEffect[Assa]->RAngle = GetRandomPos(0,4096);
		cAssaEffect[Assa]->StartPosi.z = cAssaEffect[Assa]->RDistance.z;
		AssaSetStartPosi(cAssaEffect[Assa]);
	}
	return TRUE;
}
Beispiel #18
0
/*----------------------------------------------------------------------------*
*							 스턴 파티클 
*-----------------------------------------------------------------------------*/	
int AssaParticle_Stune(smCHAR *pChar)
{
	int Count = 0;
	for(int j = 0 ; j < 3 ; j++){   
		for(int i = 0 ; i < 4 ; i++){           
			Assa = SetAssaEffect(1000,"Star.tga",pChar,0,pChar->PatHeight);                
			cAssaEffect[Assa]->MOVECODE = ASSA_ROTATE | ASSA_CHAR_POSI;
			Count++;
			cAssaEffect[Assa]->RAngleSpeed = 16*3;
			cAssaEffect[Assa]->Size.h = 500+(i*220);
			cAssaEffect[Assa]->Size.w = 500+(i*220);
			cAssaEffect[Assa]->Face.Transparency = 255 - (i*25);
			AssaGetCirclePosi(cAssaEffect[Assa],256*8,16*2*(Count*6)+(j*200*3));
		}
	}
	
	return TRUE;
}
Beispiel #19
0
/*----------------------------------------------------------------------------*
*							  ROTATE GATHER
*-----------------------------------------------------------------------------*/	
int AssaParticle_RotateGather(POINT3D *pPosi , char *FileName , int Num)
{
	for(int i = 0; i < Num ; i++){           
		Assa = SetAssaEffect(120,FileName,0,pPosi,0);                 
		cAssaEffect[Assa]->Size.w = 1000;    
		cAssaEffect[Assa]->GatherSpeed = 30;
		cAssaEffect[Assa]->MOVECODE = ASSA_ROTATE;
		cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
		cAssaEffect[Assa]->cAssaTrace->SetLength(70); //연결길이를 잡는다
		cAssaEffect[Assa]->RDistance.z = GetRandomPos(256*16*3 ,256*16*3);
		cAssaEffect[Assa]->RAngle = GetRandomPos(0,4096);
		cAssaEffect[Assa]->RAngleSpeed = GetRandomPos(100,150);
		cAssaEffect[Assa]->AddHeight = GetRandomPos(0,15000);
		cAssaEffect[Assa]->CODE = ASSA_PARTICLE_ROTATE_GATHER;

	}

	return TRUE;
}
Beispiel #20
0
/*----------------------------------------------------------------------------*
*							  상승 파티클 
*-----------------------------------------------------------------------------*/	
int AssaParticle_RisingParticle(POINT3D *pPosi , char *FileName ,int Size ,  int ContinueTime , int Range , int Count , int SpeedY)
{
	for(int i = 0; i < ContinueTime*7 ; i++){              
		for(int j = 0; j < Count ; j++){    
		  Assa = SetAssaEffect(350-(SpeedY/2),FileName,0,pPosi,0);   
		  AssaGetAniFileMat(cAssaEffect[Assa]);
		  cAssaEffect[Assa]->AniDelayTime = GetRandomPos(4,10);
		  cAssaEffect[Assa]->AniCount = GetRandomPos(0,cAssaEffect[Assa]->AniMaxCount);
		  cAssaEffect[Assa]->AniReverse = 1;
		  cAssaEffect[Assa]->Size.w = GetRandomPos(Size-500,Size+500);
		  cAssaEffect[Assa]->MoveSpeed.y = rand()%50+SpeedY;
		  AssaGetCirclePosi(cAssaEffect[Assa],GetRandomPos(0,Range*10),GetRandomPos(0,4096));
		  cAssaEffect[Assa]->MOVECODE = ASSA_MOVE;
		  cAssaEffect[Assa]->Time = GetRandomPos(-10*i,-i*9)-j;

		}
	}
	return TRUE;
}
Beispiel #21
0
/*----------------------------------------------------------------------------*
*				   BombGather (미사용)
*-----------------------------------------------------------------------------*/	
int AssaParticle_BombGather(cASSAEFFECT *pEffect)
{
	for(int i = 0 ; i < 20 ; i++){
		Assa = SetAssaEffect(100,pEffect->szFileName,0,&pEffect->Posi,0);                   
		cAssaEffect[Assa]->Size.w = 1000;  
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_SPREAD;
		cAssaEffect[Assa]->RAngle = rand()%4096;
		cAssaEffect[Assa]->RDistance.z = 64;
		cAssaEffect[Assa]->Gravity = 10;
		cAssaEffect[Assa]->MoveSpeed.y = 50;
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->MOVECODE_List[0] = ASSA_MOVE_GATHER;
		cAssaEffect[Assa]->MOVECODE_Time[0] = 70;
		cAssaEffect[Assa]->GatherSpeed = 20;
		cAssaEffect[Assa]->CenterPosi = pEffect->CenterPosi;

	}
	return TRUE;
}
Beispiel #22
0
/*----------------------------------------------------------------------------*
*							  상승 곡선형 파티클
*-----------------------------------------------------------------------------*/	
int AssaParticle_RisingRotateLine(POINT3D *pPosi , char *FileName , int ContinueTime , int Range , int Count , int SpeedY)
{ 
	int Temp =1;
	for(int i = 0; i < ContinueTime*7 ; i++){                            
		for(int j = 0; j < Count ; j++){       
		  Assa = SetAssaEffect(350-(SpeedY/2),FileName,0,pPosi,0);   
		  cAssaEffect[Assa]->Size.w = 1000; 
		  cAssaEffect[Assa]->MoveSpeed.y = rand()%50+SpeedY;
		  AssaGetCirclePosi(cAssaEffect[Assa],GetRandomPos(0,Range*10),GetRandomPos(0,4096));
		  cAssaEffect[Assa]->MOVECODE = ASSA_MOVE | ASSA_ROTATE;
		  if(Temp > 0 )Temp = -1;
		  else Temp = 1;
		  cAssaEffect[Assa]->RAngleSpeed = 50*Temp;
		  cAssaEffect[Assa]->RDistance.z = 256*16;
		  cAssaEffect[Assa]->Time = GetRandomPos(-10*i,-i*9)-j;
		  cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
		  cAssaEffect[Assa]->cAssaTrace->SetLength(50); //연결길이를 잡는다
		}
	}
	return TRUE;
}
Beispiel #23
0
/*----------------------------------------------------------------------------*
*							  원 만들기 
*-----------------------------------------------------------------------------*/	
int AssaMakeCircle(POINT3D *pPosi , char *FileName , int Radius)
{
	int Temp = Radius/256;  
	Assa = SetAssaEffect(500,FileName,0,pPosi,3000);                         
	cAssaEffect[Assa]->Size.w = 1000;
	cAssaEffect[Assa]->RDistance.z = Radius;

	for(int i = 0 ; i < Temp ; i++){     
		cAssaEffect[Assa]->RAngle += 15*Temp;
		cAssaEffect[Assa]->RPosi.x  = GetCos[ cAssaEffect[Assa]->RAngle&ANGCLIP ] + Radius*GetSin[ cAssaEffect[Assa]->RAngle&ANGCLIP ];     
		cAssaEffect[Assa]->RPosi.z  = -GetSin[ cAssaEffect[Assa]->RAngle&ANGCLIP ] + Radius*GetCos[ cAssaEffect[Assa]->RAngle&ANGCLIP ];
		cAssaEffect[Assa]->RPosi.x >>=16;
		cAssaEffect[Assa]->RPosi.z >>=16;
		cAssaEffect[Assa]->Posi.x =  cAssaEffect[Assa]->CenterPosi.x + cAssaEffect[Assa]->RPosi.x;
		cAssaEffect[Assa]->Posi.z =  cAssaEffect[Assa]->CenterPosi.z + cAssaEffect[Assa]->RPosi.z;
		cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
		cAssaEffect[Assa]->cAssaTrace->AddData(&cAssaEffect[Assa]->Posi);
		cAssaEffect[Assa]->Type = ASSATYPE_CIRCLE;
		
	}

	return Assa;
}
Beispiel #24
0
/*----------------------------------------------------------------------------*
*					     상승 곡선 조금떠 빠른거
*-----------------------------------------------------------------------------*/	
int AssaParticle_RisingRotateLinePower(POINT3D *pPosi , char *FileName,int Range ,int Speed )
{ 
	
	int Temp =1;
	for(int i = 0; i < 7 ; i++){                                   
		for(int j = 0; j < 3 ; j++){           
		  Assa = SetAssaEffect(350-(Speed/2),FileName,0,pPosi,0);   
		  cAssaEffect[Assa]->Size.w = 1000; 
		  cAssaEffect[Assa]->MoveSpeed.y = Speed;
		  AssaGetCirclePosi(cAssaEffect[Assa],Range*4,GetRandomPos(0,4096));
		  cAssaEffect[Assa]->MOVECODE = ASSA_MOVE | ASSA_ROTATE;
		  if(Temp > 0 )Temp = -1;
		  else Temp = 1;
		  cAssaEffect[Assa]->RAngleSpeed = 100*Temp;
		  cAssaEffect[Assa]->Time = GetRandomPos(-5*i,-i*4)-j;
		  cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_TRACE;
		  cAssaEffect[Assa]->cAssaTrace->SetLength(50); //연결길이를 잡는다
		  cAssaEffect[Assa]->NotFadeIn = 1;
		  
		}
	}
	return TRUE;
}
void SkillMetalionSphere(smCHAR *pChar, float time, float attackTime)
{
	HoEffectType_Magnetic_Sphere *effectType = new HoEffectType_Magnetic_Sphere();
	effectType->Init(pChar, time, attackTime);
	HoEffectManager::GetInstance()->AddEffect(effectType);
	
	GetMoveLocation( 0, 0, 10*fONE, 0, pChar->Angle.y, 0);
	POINT3D curPos;
  	curPos.x = pChar->pX + GeoResult_X;
	curPos.y = pChar->pY+8000;
	curPos.z = pChar->pZ + GeoResult_Z;
	

	g_NewParticleMgr.Start("Skill3MechanicianSparkShield", curPos, 0.2f);
	POINT3D destPos;
	destPos.x = curPos.x+30000;
	destPos.y = curPos.y+80000;
	destPos.z = curPos.z+30000;
	
   	Assa = SetAssaEffect(90,"spark01_01.bmp",0,&curPos,0);
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 3;
	cAssaEffect[Assa]->Face.r = 150;
	cAssaEffect[Assa]->Face.g = 255;
	cAssaEffect[Assa]->Face.b = 150;
	cAssaEffect[Assa]->Face.Transparency = 200;
	cAssaEffect[Assa]->Size.w = 5000;
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE; 
	
	cAssaEffect[Assa]->ScalePosi.x = destPos.x - curPos.x;
	cAssaEffect[Assa]->ScalePosi.y = destPos.y - curPos.y;
	cAssaEffect[Assa]->ScalePosi.z = destPos.z - curPos.z;

	
  	destPos.x = curPos.x+22000;
	destPos.y = curPos.y+75000;
	destPos.z = curPos.z+22000;
	
  	Assa = SetAssaEffect(100,"spark01_01.bmp",0,&curPos,0);
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 3;
	cAssaEffect[Assa]->Face.r = 150;
	cAssaEffect[Assa]->Face.g = 255;
	cAssaEffect[Assa]->Face.b = 150;
	cAssaEffect[Assa]->Face.Transparency = 200;
	cAssaEffect[Assa]->Size.w = 5000;
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE; 
	
	cAssaEffect[Assa]->ScalePosi.x = destPos.x - curPos.x;
	cAssaEffect[Assa]->ScalePosi.y = destPos.y - curPos.y;
	cAssaEffect[Assa]->ScalePosi.z = destPos.z - curPos.z;

	
	destPos.x = curPos.x-30000;
	destPos.y = curPos.y+80000;
	destPos.z = curPos.z-30000;

 	Assa = SetAssaEffect(80,"spark01_01.bmp",0,&curPos,0);
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 3;
	cAssaEffect[Assa]->Face.r = 150;
	cAssaEffect[Assa]->Face.g = 255;
	cAssaEffect[Assa]->Face.b = 150;
	cAssaEffect[Assa]->Face.Transparency = 200;
	cAssaEffect[Assa]->Size.w = 5000;
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE; 
	
	cAssaEffect[Assa]->ScalePosi.x = destPos.x - curPos.x;
	cAssaEffect[Assa]->ScalePosi.y = destPos.y - curPos.y;
	cAssaEffect[Assa]->ScalePosi.z = destPos.z - curPos.z;

	destPos.x = curPos.x-22000;
	destPos.y = curPos.y+75000;
	destPos.z = curPos.z-22000;

   	Assa = SetAssaEffect(85,"spark01_01.bmp",0,&curPos,0);
	AssaGetAniFileMat(cAssaEffect[Assa]);
	cAssaEffect[Assa]->AniDelayTime = 3;
	cAssaEffect[Assa]->Face.r = 150;
	cAssaEffect[Assa]->Face.g = 255;
	cAssaEffect[Assa]->Face.b = 150;
	cAssaEffect[Assa]->Face.Transparency = 200;
	cAssaEffect[Assa]->Size.w = 5000;
	cAssaEffect[Assa]->FACE_TYPE = ASSAFACE_SCALE; 
	
	cAssaEffect[Assa]->ScalePosi.x = destPos.x - curPos.x;
	cAssaEffect[Assa]->ScalePosi.y = destPos.y - curPos.y;
	cAssaEffect[Assa]->ScalePosi.z = destPos.z - curPos.z;
}
Beispiel #26
0
int AssaParticle_SpecialHit2(POINT3D *pPosi , int Time) //현제 Brandish에서 사용
{
	
	//선  
	for(int i = 0 ; i < 6 ; i++){                                                      
		Assa = SetAssaEffect(50,"flare.tga",0,pPosi,0);      
		cAssaEffect[Assa]->Size.w = GetRandomPos(10000,20000); 
		cAssaEffect[Assa]->Size.h = GetRandomPos(500,1200); 
		cAssaEffect[Assa]->FACEY  = GetRandomPos(0,4096);
		cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_SPECIAL_HIT;
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->ZposiFlag = 1;
		cAssaEffect[Assa]->ActionIndex[0] = 1;
		cAssaEffect[Assa]->Face.r = 255;
		cAssaEffect[Assa]->Face.g = 150;
		cAssaEffect[Assa]->Face.b = 0;
		cAssaEffect[Assa]->Time = -5*i+Time;


	}	
	//선 2
	for(int i = 0 ; i < 6 ; i++){                   
		Assa = SetAssaEffect(50,"flare.tga",0,pPosi,0);      
		cAssaEffect[Assa]->Size.w = GetRandomPos(15000,25000);
		cAssaEffect[Assa]->Size.h = GetRandomPos(500,1200); 
		cAssaEffect[Assa]->FACEY  = GetRandomPos(0,4096);
		cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_SPECIAL_HIT;
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->ActionIndex[0] = 1;
		cAssaEffect[Assa]->Face.r = 255;
		cAssaEffect[Assa]->Face.g = 200;
		cAssaEffect[Assa]->Face.b = 50;
		cAssaEffect[Assa]->Time = -5*i+Time;
		cAssaEffect[Assa]->ZposiFlag = 1;

		
	}	

	//면 
	for(int i = 0 ; i < 2 ; i++){                    
		Assa = SetAssaEffect(70,"water2.tga",0,pPosi,1500);      
		cAssaEffect[Assa]->Size.w = GetRandomPos(20000,10001);
		cAssaEffect[Assa]->FACEY  = GetRandomPos(0,4096);
		cAssaEffect[Assa]->ActionIndex[1] = 1;
		cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_SPECIAL_HIT;
		cAssaEffect[Assa]->Face.r = 255;
		cAssaEffect[Assa]->Face.g = 150;
		cAssaEffect[Assa]->Face.b = 0;
		cAssaEffect[Assa]->Time = (i*-10)+Time;
		cAssaEffect[Assa]->FACE_TYPE  = ASSAFACE_WORLD;
		//cAssaEffect[Assa]->ZposiFlag = 1;

	}	
	
	//면 2
	for(int i = 0 ; i < 1 ; i++){                      
		Assa = SetAssaEffect(60,"Light01.tga",0,pPosi,1500);       
		cAssaEffect[Assa]->Size.w = GetRandomPos(20000,10001);
		cAssaEffect[Assa]->FACEY  = GetRandomPos(0,4096);
		cAssaEffect[Assa]->ActionIndex[3] = 1;
		cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_SPECIAL_HIT;
		cAssaEffect[Assa]->Face.r = 255;
		cAssaEffect[Assa]->Face.g = 200;
		cAssaEffect[Assa]->Face.b = 50;
		cAssaEffect[Assa]->FACE_TYPE  = ASSAFACE_WORLD;
		//cAssaEffect[Assa]->ZposiFlag = 1;
		cAssaEffect[Assa]->Time = Time;

	}	

	//파티클  
	for(int i = 0 ; i < 30 ; i++){        
		Assa = SetAssaEffect(100,"flare.tga",0,pPosi,0);       
		cAssaEffect[Assa]->Size.w = GetRandomPos(500,1300);
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->Face.r = 255;
		cAssaEffect[Assa]->Face.g = 150;
		cAssaEffect[Assa]->Face.b = 0;
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_ANGLE_SPEED;
		cAssaEffect[Assa]->MoveSpeed.z = GetRandomPos(256,256*2);
		cAssaEffect[Assa]->ActionIndex[2] =1;
		cAssaEffect[Assa]->Time = GetRandomPos(-20,0)+Time;
		cAssaEffect[Assa]->Gravity = 50;
		cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_SPECIAL_HIT;
		cAssaEffect[Assa]->ZposiFlag = 1;
	}	

	for(int i = 0 ; i < 30 ; i++){         
		Assa = SetAssaEffect(100,"flare.tga",0,pPosi,0);       
		cAssaEffect[Assa]->Size.w = GetRandomPos(500,1300);
		cAssaEffect[Assa]->NotFadeIn = 1;
		cAssaEffect[Assa]->Face.r = 255;
		cAssaEffect[Assa]->Face.g = 200;
		cAssaEffect[Assa]->Face.b = 50;
		cAssaEffect[Assa]->MOVECODE = ASSA_MOVE_ANGLE_SPEED;
		cAssaEffect[Assa]->MoveSpeed.z = GetRandomPos(256,256*2);
		cAssaEffect[Assa]->ActionIndex[2] =1;
		cAssaEffect[Assa]->Time = GetRandomPos(-20,0)+Time;
		cAssaEffect[Assa]->Gravity = 50;
		cAssaEffect[Assa]->CODE   = ASSA_PARTICLE_SPECIAL_HIT;
		cAssaEffect[Assa]->ZposiFlag = 1;
	}	


	return TRUE;
}