void CActivatable::Activate() { if (m_fTimer >= m_fCoolDown) { if (m_ID == 0) { XMMATRIX spawnMatrix = m_Owner->GetWorldMatrix(); spawnMatrix; XMFLOAT4X4 spawn; XMFLOAT3 trans = m_Owner->GetAxis(2); XMMATRIX translation = XMMatrixTranslation(trans.x * -400, trans.y * -400, trans.z * -400); XMStoreFloat4x4(&spawn, spawnMatrix * translation); spawnedObject = m_Owner->GetObjMan()->CreateObject("FallenTree", spawn, m_Owner->GetEventSystem()); CSphereTrigger* trigger = (CSphereTrigger*)(spawnedObject->GetComponent("SphereTrigger")); trigger->eTriggerType = TriggerType::eTreeWall; CCollisionManager* manager = CManager::GetInstance()->m_ColManager; vector<CGameObject*> explosionVec = manager->OverlapSphere(spawnedObject->GetPosition(), 240, CapsuleType::eCapEnemy); for (CGameObject* explodeOBj : explosionVec) { CUnitStats* someStats = ((CUnitStats*)explodeOBj->GetComponent("UnitStats")); if (someStats != nullptr) { someStats->TakeDamage((float)-170); int statusInt = 0; //float slowAmt = 80; //if (slowAmt > 0.0f) //{ // ((CEnemyController*)explodeOBj->GetComponent("EnemyController"))->SetSlowedStatus(slowAmt); //} } } } else if (m_ID == 1) { XMMATRIX bulletMat = m_Owner->GetWorldMatrix(); XMFLOAT4X4 m; XMStoreFloat4x4(&m, bulletMat); CGameObject* pBullet = m_Owner->GetObjMan()->CreateObject("Bolt", m, m_Owner->GetEventSystem()); pBullet->Translate(XMFLOAT3(0, 122, 0)); auto bulletTrigger = (CSphereTrigger*)pBullet->GetComponent("SphereTrigger"); bulletTrigger->eTriggerType = TriggerType::eBullet; CBulletController* bull = (CBulletController*)pBullet->GetComponent("BulletController"); bull->SetWhoShotMe(m_Owner); bull->SetPiercing(true); bull->SetLifeTime(2.5f); bull->SetBouncing(false); m_animation = 1; } else if (m_ID == 2) { XMMATRIX bulletMat = m_Owner->GetWorldMatrix(); XMFLOAT4X4 m; XMStoreFloat4x4(&m, bulletMat); CGameObject* pBullet = m_Owner->GetObjMan()->CreateObject("FallingStalactite", m, m_Owner->GetEventSystem()); pBullet->Rotate(-90, 0, 0); auto bulletTrigger = (CSphereTrigger*)pBullet->GetComponent("SphereTrigger"); bulletTrigger->eTriggerType = TriggerType::eBullet; CBulletController* bull = (CBulletController*)pBullet->GetComponent("BulletController"); bull->SetWhoShotMe(m_Owner); bull->SetPiercing(true); float height = m_Owner->GetPosition().y; bull->SetLifeTime(1.0f * height / 1950.0f); bull->SetBouncing(false); bull->SetExploding(1); } else if (m_ID = 3) { float pushbackZ = -1350; CCollisionManager* manager = CManager::GetInstance()->m_ColManager; XMFLOAT3 collisionPos = XMFLOAT3(2900.0f, 25.0f, -3500.0f); vector<CGameObject*> pushVec = manager->OverlapSphere(collisionPos, 4000, CapsuleType::eCapEnemy); for (CGameObject* pushOBj : pushVec) { if (pushOBj->GetPosition().z < pushbackZ) { CUnitStats* someStats = ((CUnitStats*)pushOBj->GetComponent("UnitStats")); if (someStats != nullptr) { someStats->TakeDamage((float)-170); int statusInt = 0; float slowAmt = .80f; if (slowAmt > 0.0f) { ((CEnemyController*)pushOBj->GetComponent("EnemyController"))->SetSlowedStatus(slowAmt,6.0f); } } ((CEnemyController*)pushOBj->GetComponent("EnemyController"))->pushbackTimer = 4.5f; } } XMFLOAT4X4 t; XMMATRIX tMat = XMMatrixTranslation(-1500.0f, 250.0f, -2500.0f); XMStoreFloat4x4(&t, tMat); CGameObject* pWater = m_Owner->GetObjMan()->CreateObject("WaterWave", t, m_Owner->GetEventSystem()); tMat = XMMatrixTranslation(-1500.0f, 250.0f, -3000.0f); XMStoreFloat4x4(&t, tMat); pWater = m_Owner->GetObjMan()->CreateObject("WaterWave", t, m_Owner->GetEventSystem()); tMat = XMMatrixTranslation(-1500.0f, 250.0f, -3750.0f); XMStoreFloat4x4(&t, tMat); pWater = m_Owner->GetObjMan()->CreateObject("WaterWave", t, m_Owner->GetEventSystem()); tMat = XMMatrixTranslation(-1500.0f, 250.0f, -4500.0f); XMStoreFloat4x4(&t, tMat); pWater = m_Owner->GetObjMan()->CreateObject("WaterWave", t, m_Owner->GetEventSystem()); TEventData tdata; tdata.i = AK::EVENTS::PLAY_SFX_WATER_RUSH; CManager::GetInstance()->GetServer()->SendEventMessage(EventID::PlaySoundOnClient, tdata); } m_fTimer = 0.0f; } }