bool RTFformatting::SanitiseBullets(const RTFPCData* pData, CWideString& wsListNumberText) const { USES_CONVERSION; bool bUseFontFromListTable = false; if (pData == NULL || !pData->HasContent()) return bUseFontFromListTable; const CWideString& cwsInputString = pData->GetContent(); for (int ii = 0; ii < cwsInputString.GetLength() ; ii++) { WCHAR w = cwsInputString[ii]; if (IsBullet(w)||isalpha( w )||isdigit(w)) { wsListNumberText = cwsInputString; if (IsBullet(w)) { if (wsListNumberText.GetLength() > 1 && wsListNumberText.GetData()[wsListNumberText.GetLength()-1] == L';') wsListNumberText.Left(wsListNumberText, wsListNumberText.GetLength()-1); // only one char for a bullet - this eliminates the ; bUseFontFromListTable = true; } break; } } return bUseFontFromListTable; }
DWORD GObjectBulletPmp::Update(long idx) { this->Animations[State].ProcAnimation(Game::AnimationTicker::Tick); if(this->Animations[State].CurrentFrame == 1 ) { //do the dmg and destroy obj for(size_t i = 0; i < Game::ObjectBuffer::Buffer.size() ; i++) { GObject* Obj = Game::ObjectBuffer::Buffer[i]; if(IsPlayer(Obj->ObjectType) || IsBullet(Obj->ObjectType)) continue; float Distance = Vec3Distance(&this->Position , &Obj->Position); if(Distance < this->Radius + Obj->Radius ) { Obj->Health -= Power; Game::LastDamage = Power; } } } if(this->Animations[State].Ended) { this->Animations[State].ResetAnimation(); return OBJECT_DESTROY; } return OBJECT_IDLE; }
DWORD GObjectDecoreRock::Update(long idx) { for(int i = 0 ; i < Game::ObjectBuffer::Buffer.size() ; i++) { if(IsBullet(Game::ObjectBuffer::Buffer[i]->ObjectType)) { float Delta = Vec3Distance(&Position , &Game::ObjectBuffer::Buffer[i]->Position); if(Delta < Radius + Game::ObjectBuffer::Buffer[i]->Radius) { Game::ObjectBuffer::DestroyObject(i); i--; } } } return OBJECT_IDLE; }
void CMover::CMD_SetRangeAttack( OBJID idTarget, int nPower ) { TRACE("CMD_SetRangeAttack(%d, %d)\n", idTarget, nPower ); if( m_pActMover->IsActAttack() ) // 이미 어택중이면 취소. return; if( IsDie() ) return; // 죽었을때 사용금지. ItemProp *pItemProp = GetActiveHandItemProp(); if( pItemProp == NULL ) return; if( pItemProp->dwItemKind3 != IK3_BOW ) // 들고있는 무기가 보우가 아니면 에러 return; if( IsBullet( pItemProp ) == FALSE ) return; ClearActParam(); SetDestObj( idTarget, GetAttackRange( pItemProp->dwAttackRange ), TRUE ); // 이동할 목표물(idTarget)과 그 거리를 설정 SetCmd( OBJACT_RANGE_ATTACK, idTarget, nPower, 0 ); // 사정거리가 되었을때 실행할 명령 셋팅. }