[ViewVariables]
public readonly List<EntityUid> Spells = new();
+ // The three fields below are just used for initialization.
/// <summary>
- /// The three fields below is just used for initialization.
+ /// Dictionary of spell prototypes to charge counts.
+ /// If the charge count is null, it means the spell has infinite charges.
/// </summary>
[DataField]
[ViewVariables(VVAccess.ReadWrite)]
- public Dictionary<EntProtoId, int> SpellActions = new();
+ public Dictionary<EntProtoId, int?> SpellActions = new();
[DataField]
[ViewVariables(VVAccess.ReadWrite)]
if (spell == null)
continue;
- _sharedCharges.SetCharges(spell.Value, charges);
+ // Null means infinite charges.
+ if (charges is { } count)
+ _sharedCharges.SetCharges(spell.Value, count);
ent.Comp.Spells.Add(spell.Value);
}
}
foreach (var (id, charges) in ent.Comp.SpellActions)
{
EntityUid? actionId = null;
- if (_actions.AddAction(args.Args.User, ref actionId, id))
- _sharedCharges.SetCharges(actionId.Value, charges);
+ if (_actions.AddAction(args.Args.User, ref actionId, id)
+ && charges is { } count) // Null means infinite charges
+ _sharedCharges.SetCharges(actionId.Value, count);
}
}
components:
- type: Spellbook
spellActions:
- ActionSpawnMagicarpSpell: -1
+ ActionSpawnMagicarpSpell: null
- type: entity
id: ForceWallSpellbook
color: gold
- type: Spellbook
spellActions:
- ActionForceWall: -1
+ ActionForceWall: null
- type: entity
id: BlinkBook
color: gold
- type: Spellbook
spellActions:
- ActionBlink: -1
+ ActionBlink: null
- type: entity
id: SmiteBook
- state: overlay_blood
- type: Spellbook
spellActions:
- ActionSmiteNoReq: -1
+ ActionSmiteNoReq: null
- type: entity
id: KnockSpellbook
color: "#98c495"
- type: Spellbook
spellActions:
- ActionKnock: -1
+ ActionKnock: null
- type: entity
id: FireballSpellbook
shader: unshaded
- type: Spellbook
spellActions:
- ActionFireball: -1
+ ActionFireball: null
- type: entity
id: ScrollRunes
- state: spell_default
- type: Spellbook
spellActions:
- ActionFlashRune: -1
- ActionExplosionRune: -1
- ActionIgniteRune: -1
- ActionStunRune: -1
+ ActionFlashRune: null
+ ActionExplosionRune: null
+ ActionIgniteRune: null
+ ActionStunRune: null