/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 물결형 파티클 (피어싱에서 사용) *-----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 벨트형 파티클 *-----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 상승 파티클 *-----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 상승 곡선형 파티클 *-----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------* * 상승 곡선 조금떠 빠른거 *-----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------* * 상승 파티클 *-----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------* * 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; }
//执行 void COpPosition::Execute(CMoveShape* pShape) { LONG x=0,y=0; LONG lDistance=0; list<POINT> listPos; CServerRegion* pRegion = dynamic_cast<CServerRegion*>(m_pParam->pUser->GetFather()); if (m_refObj==Obj_Mouse) { x=m_pParam->nMouseX; y=m_pParam->nMouseY; } else if(m_pParam->pUser && pShape) { if (m_eDriect==DIREC_Front) { long lDistance = m_pParam->pUser->RealDistance(pShape); if (lDistance<0) { lDistance = 0; } GetLineFront(x,y,m_pParam->pUser->GetTileX(),m_pParam->pUser->GetTileY(), pShape->GetTileX(),pShape->GetTileY(),lDistance); } else if (m_eDriect==DIRECT_Back) { GetLineBack(x,y,m_pParam->pUser->GetTileX(),m_pParam->pUser->GetTileY(), pShape->GetTileX(),pShape->GetTileY(),pShape->GetFigure()); } } if (x==0 && y==0) return; if( pRegion && m_refObj!=Obj_Mouse) { if( x > pRegion -> GetWidth() || x < 0 || y >= pRegion -> GetHeight() || y < 0 || pRegion -> GetBlock(x, y) != CRegion::BLOCK_NO) { GetRandomPos(pShape,x,y); } } if (m_Obj==Obj_Self) { pShape = m_pParam->pUser; } if (pShape && pShape->CanMove()) { pShape->ProduceEvent(ET_Move); pShape->ProduceEvent(ET_EventBreak); if (m_ePosStyle==POS_SIMPLE) { pShape->SetPosition(x,y); } else if (m_ePosStyle==POS_SLIP) { pShape->SetSlipPos(x,y,m_fSpeed,m_pParam->pUser->GetDirEx()); #ifdef _SKILL_INFO_D_ Log4c::Trace(SKILL_MODULE, "位移坐标x:%d,y:%d,目标坐标:x:%d,y:%d\n",x,y,m_pParam->pMouseShape->GetTileX(),m_pParam->pMouseShape->GetTileY()); #endif } } }
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; }