void PoisonProjectileSpell::Update(float timeDelta) { for(size_t i = 0; i < m_projectiles.size(); i++) { CPoisonProjectile * projectile = m_projectiles[i]; projectile->Update(timeDelta); } for(size_t i = 0; i < m_projectiles.size(); i++) { CPoisonProjectile * projectile = m_projectiles[i]; projectile->Render(); if(lightHandleIsValid(projectile->lLightId)) { EERIE_LIGHT * light = lightHandleGet(projectile->lLightId); light->intensity = 2.3f * projectile->lightIntensityFactor; light->fallend = 250.f; light->fallstart = 150.f; light->rgb = Color3f::green; light->pos = projectile->eCurPos; light->time_creation = (unsigned long)(arxtime); light->duration = 200; } AddPoisonFog(projectile->eCurPos, m_level + 7); if(m_timcreation + 1600 < (unsigned long)(arxtime)) { DamageParameters damage; damage.pos = projectile->eCurPos; damage.radius = 120.f; float v = 4.f + m_level * ( 1.0f / 10 ) * 6.f ; damage.damages = v * ( 1.0f / 1000 ) * framedelay; damage.area = DAMAGE_FULL; damage.duration = static_cast<long>(framedelay); damage.source = m_caster; damage.flags = 0; damage.type = DAMAGE_TYPE_MAGICAL | DAMAGE_TYPE_POISON; DamageCreate(damage); } } }
void PoisonProjectileSpell::Update() { for(size_t i = 0; i < m_projectiles.size(); i++) { CPoisonProjectile * projectile = m_projectiles[i]; projectile->Update(g_gameTime.lastFrameDuration()); } for(size_t i = 0; i < m_projectiles.size(); i++) { CPoisonProjectile * projectile = m_projectiles[i]; projectile->Render(); EERIE_LIGHT * light = lightHandleGet(projectile->lLightId); if(light) { light->intensity = 2.3f * projectile->lightIntensityFactor; light->fallend = 250.f; light->fallstart = 150.f; light->rgb = Color3f::green; light->pos = projectile->eCurPos; light->creationTime = g_gameTime.now(); light->duration = GameDurationMs(200); } AddPoisonFog(projectile->eCurPos, m_level + 7); if(m_elapsed > GameDurationMs(1600)) { DamageParameters damage; damage.pos = projectile->eCurPos; damage.radius = 120.f; damage.damages = (4.f + m_level * 0.6f) * 0.001f * g_framedelay; damage.area = DAMAGE_FULL; damage.duration = g_gameTime.lastFrameDuration(); damage.source = m_caster; damage.flags = 0; damage.type = DAMAGE_TYPE_MAGICAL | DAMAGE_TYPE_POISON; DamageCreate(damage); } } }