/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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_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; }
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; }