Chcę wprowadzić różne efekty do nabojów typu podpalenie,trucizna itp.
Mam klasę weapon:

#pragma once

#include "Item.hpp"

class Weapon : public Item
{
public:
    Weapon(std::string data,TextureManager &textureManager);
    void update(sf::Time dt);
    void useItem(Statistic &statistic);

private:
    int speed;
    int damage,currentDamage;
    bool collision;
    float criticalAttack;

    sf::Vector2i bRect,bTileSize;

    sf::Clock game_clock;
    sf::Time shot_delay;
    sf::Time last_fire_timestamp;
};

ona tworzy obiekty pocisków podczas użycia:

    statistic.bullet.emplace_back(new NormalBullet(statistic.playerPosition,statistic.mousePosition, speed, currentDamage, collision,
                                                    bRect, bTileSize,effectData,textureManager));
#pragma once

#include <SFML\Graphics.hpp>
#include "TextureManager.hpp"

#define _USE_MATH_DEFINES
#include <math.h>

class Bullet : public sf::Drawable
{
public:
    Bullet();

    virtual void update(sf::Time dt);
    void draw(sf::RenderTarget& target, sf::RenderStates states) const;

    void setIsActive(bool isActive);
    bool getIsActive();
    bool getCollision();

    sf::FloatRect getGlobalBounds();
    int getDamage();
protected:
    int setItems(std::string &item);

    sf::Sprite sprite;

    int damage;
    int speed;
    bool collision;
    sf::Vector2f direction;
    float angle;

    bool isActive;
};

I chcę właśnie stworzyć te różne efekty, podpalenie,trucizna itd.
Chcę stworzyć klasę główną Effects, i różne dziedziczące od niej, ale np. będzie taki rodzaj efektu że co kilka sekund będzie odbierać ileś tam HP ogniem/trucizną, albo pocisk co stunuje gracza itd. Zatem konstruktor będzie przyjmował różne parametry.

Nie wiem czy zrobić jakąś strukturę z parametrami typu type,damage,chance itd. i potem te strukturę wypełniać w weapon, przekazywać do bullet, a za jej pomocą tworzyć efekt na przeciwniku. Macie jakieś pomysły?