Modding:Effects
Jump to navigation
Jump to search
This article is a stub. You can help Caves of Qud Wiki by expanding it. |
This article is a stub. You can help Caves of Qud Wiki by expanding it.
This page is about modding. See the modding overview for an abstract on modding. |
This page is about modding. See the modding overview for an abstract on modding.
This page is about modding. See the modding overview for an abstract on modding.
Effect Types
All effects inherit a virtual method called GetEffectType()
which seems to return a nonsense integer. It's actually a set of binary flags compressed into an integer. Effects.cs helpfully notes which digit represents what flag and what the following table is based off:
Mechanisms | |||
---|---|---|---|
# bit from right | Effect Type | Decimal | Binary |
1 | General | 1 | 0000000000000000000000000001 |
2 | Mental | 2 | 0000000000000000000000000010 |
3 | Metabolic | 4 | 0000000000000000000000000100 |
4 | Respiratory | 8 | 0000000000000000000000001000 |
5 | Circulatory | 16 | 0000000000000000000000010000 |
6 | Contact | 32 | 0000000000000000000000100000 |
7 | Field | 64 | 0000000000000000000001000000 |
8 | Activity | 128 | 0000000000000000000010000000 |
9 | Dimensional | 256 | 0000000000000000000100000000 |
10 | Chemical | 512 | 0000000000000000001000000000 |
11 | Structural | 1024 | 0000000000000000010000000000 |
12 | Sonic | 2048 | 0000000000000000100000000000 |
13 | Temporal | 4096 | 0000000000000001000000000000 |
14 | Neurological | 8192 | 0000000000000010000000000000 |
15 | Disease | 16384 | 0000000000000100000000000000 |
Class | |||
# bit from right | Effect Type | Decimal | Binary |
25 | Minor | 16777216 | 0001000000000000000000000000 |
26 | Negative | 33554432 | 0010000000000000000000000000 |
27 | Removable | 67108864 | 0100000000000000000000000000 |
28 | Voluntary | 134217728 | 1000000000000000000000000000 |
There are other masks that check the classifications of bits instead:
Group of Bits | Decimal | Binary | Parts |
---|---|---|---|
Mechanism | 16777215 | 0000111111111111111111111111 | Bits # 1 - 24 |
Class | 251658240 | 1111000000000000000000000000 | Bits # 28 - 25 |
Duration Indefinite | 9999 | 10 011 100 001 111 | Bits # 1, 2, 3, 4, 9, 10, 11, 14 |
If this is not set, it will default to 1, which is just the generic category.
Methods of masking
Effects have two methods of checking these masks:
- bool
IsOfType()
- returns true if ANY of the specified digits are true - bool
IsOfTypes()
- returns true if ALL of the specified digits are true
These checks are done by running a bitwise AND(&) operation on them.
Example
This is a simplified version of something already in GameObject.cs:
int mask = 9244;
GameObject GO = [...];
for (int count = GO.Effects.Count; index < count; ++index)
{
Effect effect = this.Effects[index];
if (effect.IsOfType(mask))
(Do something);
}
where mask
in binary is 10010000011100
, any effect of type 3, 4, 5, 11, 13.
|