Effect in SuperTiles consist of 2 main components: EffectData, EffectEntity.

First one is EffectData which is an information storage with Stats values, Visual info, and the logic. Logic consists of 3 parts:

  • OnAdded executes when effect was added to Unit
  • Handler executes every owner’s turn, before all actions
  • OnRemoved executes when the effect was removed from the Unit.


For example, Bleeding effect in the screenshot above haven’t got OnAdded and OnRemoved logic. Consequently, effect only deals damage (Handler has Damage type). Also, you could play Fx when the effect will be added or removed by checking corresponding toggles. One moment: If Fx Add (Remove) Handler is None – Default Fx (located inside asset EffectFxAddDefault (EffectFxRemoveDefault)) will be played

EffectData consists of nested ScriptableObjects and Effect Editor window was designed to simplify edit process

Here you can create a new one

Or duplicate selected EffectData

If you decide to change any logic (OnAdded, Handler, OnRemoved), just select corresponding tab and Click Change button

Select new type from popup. If you select None than existing logic will be deleted.

Изображение выглядит как текст????Автоматически созданное описание

And click Change to submit your decision

If you create Effect without any logic, Effect transforms into StatusEffect. It does nothing but could be a marker for any other logic. By other logic, we mean Health Rules

There are 3 types of Handler logic:

  1. Damage – deal damage every unit turn. Power is defined as a stat in Stats list
  2. FxPlay – Spawn object for specified duration and then destroy it
  3. UnitStatChange – change specified unit stat


List of Handlers will be extended in future updates, but you could easily implement any logic by yourself. For example, you decide to create an effect that will kill a unit when it is removed. Of course, you could create effect that deal -9999999 damage, but sometimes this way could lead to unexpected results (input damage could be converted to a small value and the unit will survive). Let's assume that we still decide to create our own logic, then we should create a new class Kill which should inherit the EffectHandler class.

Изображение выглядит как текст????Автоматически созданное описание

As you could see, EffectHandler has only one abstract method which just needs to be implemented.

Something like

Изображение выглядит как текст????Автоматически созданное описание

Method Kill is underlined because there is no such method, so I wrote it just for example. There is no doubt that you could implement it by yourself.

And one more step, you should create a Kill class creator. To do this you need to create a new class which will implement the EffectHandlerCreator interface. It is needed for correct Effect Editor work.

Изображение выглядит как текст????Автоматически созданное описание

Examples could be found inside the EffectHandlerCreator file.

Important note: Creator class name should be made in the following form:

Second important Effect component is EffectEntity

Изображение выглядит как текст????Автоматически созданное описание

Here we store the Effect state at the runtime. Effect state mainly consists of effect current duration and several wrappers of EffectData logic methods.

Usually, Effects could be added from Item -> ActionHandler. More info here.

Effects will be visualized near the unit avatar and there will be an effect mark near the unit model.

       Изображение выглядит как текст, желтый????Автоматически созданное описание

Created with the Personal Edition of HelpNDoc: Keep Your PDFs Safe from Unauthorized Access with These Security Measures