Don't Starve Together

Don't Starve Together

Flaire The Spellblade (DST!)
 This topic has been pinned, so it's probably important
Fairy  [developer] 5 Jun, 2021 @ 6:37am
Extra tips!
This post describes some of Flaire's features in more detail in a Q and A style format. If you like numbers, those will be included below as well!

1. How exactly does the Element Enhancer work?
  • The Element Enhancer's main use is to be able to regenerate mana even when constructing a base with hand-crafted turfs on the ground (carpet, checkered flooring, etc.)

    As a side perk, it increases your base mana regen (over time) by up to 20%, depending on how many other structures are around it. This means you'll regenerate a subtle ~9 more mana per day, should you be near one in an established base. Its range is comparable to that of a lightning rod.

  • Note that the Element Enhancer's effects are quite subtle; other than being able to regenerate mana on handcrafted turfs, there are no flashy visual indicators—but rest assured it is doing its job.

  • As the Enhancer draws in nearby elementals, mana may crystallize in the form of a special gem every six days—you might notice it glistering between the flowers. This aspect this gem grants you may help in tough situations, so use it well (check #6 for details)!


2. What do all of the spells do?
  • Tip: with a spell selected, you can alt-click (configurable!) your mana gauge and Flaire will roughly inform you about what the spell does.

  • Heal (35 mana)
    Heals your target for 20 HP (30 with Water Aspect, 10 with Fire Aspect). As it is a base spell, you can reduce its mana cost to 21 by using it after a combo. It also grants your target a buff to their incoming healing, lasting 12 seconds (or 18 seconds with Lightning Aspect)!

    The buff grants your target a 50% healing boost under normal conditions, 75% under Water Aspect, but only 25% under Fire Aspect. Note it boosts any healing received, so that includes salves, healing foods, additional Heal spells, or even Wortox's souls!



  • Manaburst (35 mana)
    Deals damage equal to three times that of your weapon, plus 1% of your target's maximum HP as bonus damage. Deals 50% more damage during Fire Aspect, but 50% less during Water Aspect. As it is a base spell, you can reduce its mana cost to 21 by using it after a combo.

    You also get a buff that increases all damage dealt, including melee damage, lasting 12 seconds normally, or 36 seconds when fighting a boss monster (also +50% longer with Lightning Aspect)!

    The buff grants you a 10% damage boost under normal conditions, 20% under Fire Aspect, and only 5% under Water Aspect—But you'll always deal a flat 8 extra damage with it on. While the buff is active, the duration will refresh with every swing of your weapon or every spell cast.

    Note: The buff only applies when using a sword-weapon, and can only be refreshed using one. It will stay active in the background when you switch to another tool/weapon, but it simply won't grant you any extra damage.



  • Guard (35 mana)
    Increases target's overall defence by 25%, or 37.5% with Lightning Aspect.
    This buff works like armour; packing 200 HP, or 300 HP with Lighting Aspect, it will lose HP according to damage absorbed for an indefinite amount of time, until it breaks.

    Additionally, Guard's HP takes dramatically less damage when it is freshly applied; starting at 5% of damage absorbed and slowly deteriorating to 100% of damage absorbed over the course of one day (or 1.5 days when applied with Lightning Aspect).



  • Remedy (35 mana)
    Increases target's resistances for one day; 30% fire resistance, 30% wetness resistance, +15 grogginess resistance, and +60 winter/summer insulation. These numbers will be boosted up by 50% if cast while under the effect of Lightning Aspect (including the duration)!



  • Gleam (5 mana)
    Summons a small light sprite above target, illuminating it. It costs mana over time to keep it active (1 mana point over 5 seconds), but it won't cost any mana to dispel it. Additionally, its radius scales with how much mana you have left. While under the effect of Lightning Aspect, the light radius is increased by 50% and the mana drain rate is reduced by 50% as well!



  • Vivify (35 mana)
    Resurrects a player ghost, at the cost of your own maximum health (12.5%, which is half that of a Telltale Heart). Additionally, it grants you 40 sanity whenever you resurrect someone with it. When cast with Lightning Aspect active, your resurrection target comes back with 50% better stats than normal.


3. How does her Reserved Eater perk work?
  • When attempting to eat above 75 hunger, Flaire will refuse to eat any more, meaning she can't spam foods to heal or recover mana like other survivors can.

    Flaire gets some mana instantly by eating crock pot foods. The more hunger the food restores, the more mana- however, if the meal is too big, she will only regenerate a small amount of mana.

  • Any foods that restore more than 37.5 hunger only restore 5 mana. (Some exceptions apply)

  • Foods that restore 37.5 hunger restore 25 mana.

  • Foods that restore 25 hunger restore 15 mana.

  • Anything that goes below / between these values restore half of their hunger value as mana. For example, Unagi (18.75 hunger) will restore half of that as mana (9.375).

  • When eating foods that drain hunger, Flaire will instead drain 5 mana each time.

4. How does the boss-mana-regeneration work?
    This is the situation the perk will activate:
  • You are fighting a boss monster.
  • Your mana is currently below 21 (the amount needed to cast a combo'd spell).
    As long as you meet these conditions, you will recover enough mana to cast a base spell within 12 hits, or 6 hits if you have Manaburst's damage boost active!

5. What's changed when playing with Uncompromising Mode?
  • Flaire gains +3 sanity each time she casts a spell (excluding Gleam). Only +0.6 sanity is gained if the spell was chain-cast.
  • Dark Swords only drain -5 sanity/minute when wielded by Flaire (compared to -20/minute). This bonus also scales with the perks from the Top Hat.
  • While Guard is active, equipped armour takes 25% less damage from attacks (or 37.5% less if Guard was cast with Lightning Aspect). If multiple pieces of armour are worn, the absorption is split between all of them.
  • Remedy grants an extra grace period between each sneezing fit during the hay fever in spring, ranging from 60 to 90 seconds (or always 90 seconds when cast with Lightning Aspect).

6. The Clear Gem, what does it do exactly?
  • The Clear Gem allows you to invoke Pure Aspect, and is the only way of doing so. Like other aspects, it lasts for one day, and no other aspect can be invoked during this time.
  • Pure Aspect allows you to regenerate mana anywhere, just like being nearby an Element Enhancer, on top of reducing your mana costs by 50%.
  • Additionally, similarly to the Element Enhancer, it increases your natural mana regeneration rate by 20%—though this bonus is only granted when treading upon nature turf. If you're nearby an Enhancer, the biggest mana regeneration bonus stays.

7. How do I utilize the custom tags to make a weapon castable?
  • Any mod that adds an item to the game should have a lua file for it in the "prefabs" folder of that mod. When you open it, there should be a code block called "local function fn()" and a bunch of stuff inside it.

  • In there, just do 'inst:AddTag("spellbladeflaire_wepSword")' [or spellbladeflaire_wepOther]. Just make sure it's after this line;
    local inst = CreateEntity()

    and before this little code block;

    if not TheWorld.ismastersim then
    return inst
    end

I hope that helps! Let me know if you want to know about anything else in more detail.
Last edited by Fairy; 7 Jul @ 8:00pm
< >
Showing 1-10 of 10 comments
Syrong 5 Jun, 2021 @ 9:00am 
We can use magic spell to increase defense, why not design a spell that can increase damage.By the way, the 'Gleam' spell consumes too much mana.100 mana can only use three or four spells.I hope players have a way to increase the maximum mana.
Luneyl 3 May, 2023 @ 12:52am 
Is it possible to make standalone patch that will make weapon from another mod castable or only the mod author themself have to do it?

(For example through AddPrefabPostInit? I am not very skilled in that but want to try if it is possible)
Fairy  [developer] 3 May, 2023 @ 2:24pm 
Yes, that should be possible. Here's an example:

AddPrefabPostInit("shovel", function(inst) inst:AddTag("spellbladeflaire_wepOther") end)

That goes in modmain.lua. Just put whatever mod prefab you're adjusting in place of "shovel" there (and the appropriate tag for the right strength). You can find the exact name for both tags at the bottom of the main mod page if you need them.

Hope that helps!
Last edited by Fairy; 3 May, 2023 @ 2:33pm
Luneyl 3 May, 2023 @ 4:06pm 
Thanks!
Luneyl 5 May, 2023 @ 4:44am 
Originally posted by HIGHLY EFFECTIVE+🛡️MANEUVRE:
Yes, that should be possible. Here's an example:

AddPrefabPostInit("shovel", function(inst) inst:AddTag("spellbladeflaire_wepOther") end)

That goes in modmain.lua. Just put whatever mod prefab you're adjusting in place of "shovel" there (and the appropriate tag for the right strength). You can find the exact name for both tags at the bottom of the main mod page if you need them.

Hope that helps!

It looks like this patching method doesn't work well. I patched cane like this and it worked fine. But sometimes when switching from cane to lantern or other castable weapon the client crashes:
[00:09:00]: [string "scripts/componentactions.lua"]:2517: attempt to index a nil value LUA ERROR stack traceback: scripts/componentactions.lua:2517 in (method) HasActionComponent (Lua) <2506-2528> self (valid:true) = GUID = 102117 Transform = Transform (00000000604BED10) inlimbo = false actionreplica = table: 0000000071415040 event_listening = table: 0000000071414B40 actioncomponents = table: 0000000010314AF0 lower_components_shadow = table: 0000000071413600 _insight_highlight = table: 000000005EF69090 entity = Entity (000000001ECFDD40) AnimState = AnimState (00000000604BF430) prefab = cane Network = Network (00000000604BEE00) persists = true event_listeners = table: 0000000071414E60 modactioncomponents = table: 0000000068C7B480 pendingtasks = table: 000000007A5AA760 spawntime = 0.70000003650784 name = Walking Cane replica = table: 0000000071413A10 Physics = Physics (00000000604BF220) components = table: 00000000714135B0 SoundEmitter = SoundEmitter (00000000604BEC50) name = deployable id = nil modname = workshop-2971223092 cmplist = table: 0000000068C7B7F0 scripts/actions.lua:822 in (field) strfn (Lua) <821-830> act = *** failed to evaluate *** (valid:true) scripts/bufferedaction.lua:63 in (method) GetActionString (Lua) <50-64> self (valid:true) = action = table: 000000004B34C120 invobject = 102117 - cane (valid:true) onfail = table: 000000006939D6E0 doerownsobject = true rotation = 0 options = table: 000000006939E130 onsuccess = table: 000000006939DEB0 doer = 100059 - flaire (valid:true) pos = 254.97, 39.42 on nil str = nil overriden = nil scripts/widgets/hoverer.lua:63 in (upvalue) oldOnUpdate (Lua) <30-146> self = str = Attack callbacks = table: 000000004B9C8F20 isFE = false inst = 100544 - (valid:true) focus = false followhandler = table: 000000004B9CB4F0 children = table: 000000004B9C9FB0 parent = Controls focus_flow_args = table: 000000004B9C9330 focus_target = false OnUpdate = function - ../mods/workshop-2189004162/scripts/uichanges/hoverer.lua:197 secondarytext = Text - : Transform strFrames = 0 owner = 100059 - flaire (valid:true) insightText = RichText - <null> can_fade_alpha = true default_text_pos = (0.00, 40.00, 0.00) UpdatePosition = function - ../mods/workshop-2189004162/scripts/uichanges/hoverer.lua:112 name = HoverText focus_flow = table: 000000004B9C92E0 enabled = true text = Text - Beast Cutter : Equip shown = true str = nil colour = nil secondarystr = nil lmb = *** failed to evaluate *** (valid:true) overriden = nil ../mods/workshop-2189004162/scripts/uichanges/hoverer.lua:213 in (method) OnUpdate (Lua) <197-214> self = str = Attack callbacks = table: 000000004B9C8F20 isFE = false inst = 100544 - (valid:true) focus = false followhandler = table: 000000004B9CB4F0 children = table: 000000004B9C9FB0 parent = Controls focus_flow_args = table: 000000004B9C9330 focus_target = false OnUpdate = function - ../mods/workshop-2189004162/scripts/uichanges/hoverer.lua:197 secondarytext = Text - : Transform strFrames = 0 owner = 100059 - flaire (valid:true) insightText = RichText - <null> can_fade_alpha = true default_text_pos = (0.00, 40.00, 0.00) UpdatePosition = function - ../mods/workshop-2189004162/scripts/uichanges/hoverer.lua:112 name = HoverText focus_flow = table: 000000004B9C92E0 enabled = true text = Text - Beast Cutter : Equip shown = true arg = nil scripts/frontend.lua:866 in (method) Update (Lua) <687-889> self = topblackoverlay = Image - images/global.xml:square.tex fade_title_out = false helptext_max_characters_per_line = 130 overlayroot = over [00:09:00]: [string "scripts/componentactions.lua"]:2517: attempt to index a nil value LUA ERROR stack traceback: scripts/componentactions.lua:2517 in (method) HasActionComponent (Lua) <2506-2528> scripts/actions.lua:822 in (field) strfn (Lua) <821-830> scripts/bufferedaction.lua:63 in (method) GetActionString (Lua) <50-64> scripts/widgets/hoverer.lua:63 in (upvalue) oldOnUpdate (Lua) <30-146> ../mods/workshop-2189004162/scripts/uichanges/hoverer.lua:213 in (method) OnUpdate (Lua) <197-214> scripts/frontend.lua:866 in (method) Update (Lua) <687-889> scripts/update.lua:95 in () ? (Lua) <33-138>

Also it constantly spamming this in client logs:
[00:08:56]: ERROR: Mod component actions are out of sync for mod workshop-2971223092. This is likely a result of your mod's calls to AddComponentAction not happening on both the server and the client. [00:08:56]: K: workshop-2496686961 V: table: 000000006CE4DC30 [00:08:56]: K: 1 V: 1 [00:08:56]: K: workshop-2971223092 V: table: 0000000068C7B7F0 [00:08:56]: self.modactioncomponents is [00:08:56]: K: workshop-1602267559 V: table: 000000004805EAB0 [00:08:56]: K: EQUIPPED V: table: 000000004805E2E0 [00:08:56]: K: makegate V: function: 00000000131CF9A0 [00:08:56]: K: POINT V: table: 000000004805E6A0 [00:08:56]: K: makegate V: function: 00000000131CF420 [00:08:56]: K: SCENE V: table: 000000004805E740 [00:08:56]: K: scheme V: function: 00000000131CF960 [00:08:56]: K: workshop-2328604820 V: table: 00000000139FA2B0 [00:08:56]: K: EQUIPPED V: table: 00000000139FA440 [00:08:56]: K: areapicker V: function: 0000000010F5B950 [00:08:56]: K: USEITEM V: table: 00000000139FA620 [00:08:56]: K: areapicker V: function: 0000000010F5AF50 [00:08:56]: K: workshop-2496686961 V: table: 000000001B7275A0 [00:08:56]: K: EQUIPPED V: table: 000000001B7270A0 [00:08:56]: K: weaponcaster V: function: 0000000018448370 [00:08:56]: K: INVENTORY V: table: 000000001B728220 [00:08:56]: K: aspectinvoker V: function: 00000000184480D0 [00:08:56]: K: spellprinthandler V: function: 0000000018447E90 [00:08:56]: K: workshop-2589174774 V: table: 000000004806F8B0 [00:08:56]: K: SCENE V: table: 000000004806F900 [00:08:56]: K: lureplant_pick V: function: 0000000010F424D0 [00:08:56]: K: workshop-2621090176 V: table: 00000000479CD6E0 [00:08:56]: K: SCENE V: table: 00000000479CD730 [00:08:56]: K: teleporter V: function: 000000001EE3AFB0 [00:08:56]: K: worldmigrator V: function: 00000000423DD910 [00:08:56]: K: workshop-2653288638 V: table: 000000004804B8A0 [00:08:56]: K: POINT V: table: 000000004804B030 [00:08:56]: K: spellcaster V: function: 00000000427E9EF0 [00:08:56]: K: workshop-767776640 V: table: 0000000013A01010 [00:08:56]: K: USEITEM V: table: 0000000013A00610 [00:08:56]: K: combinerepairable V: function: 0000000010F5E5D0 [00:08:56]: MOD_COMPONENT_ACTIONS is
(spams this section A LOT)

Any tips on how to fix this? I see that the problem is that id of my action component is nil but I don't even have any components in that patch mod :DSTghost:

UPD: Asked on klei discord server and got a hint that it is mod UI hoverer crashes, probably because of update function.

Tried to comment all patches and leaving only mana per hit function. It stopped spam of "out of sync" and probably crashes (they are inconsistent). Commenting mana function and uncommenting patches brings out of sync spam back.

UPD2: Disabling all mods from spam section leaves only this, but it still spams
[00:11:57]: ERROR: Mod component actions are out of sync for mod Flaire The Spellblade [Patches & Options]. This is likely a result of your mod's calls to AddComponentAction not happening on both the server and the client. [00:11:57]: K: Flaire The Spellblade [Patches & Options] V: table: 00000000172AB110 [00:11:57]: K: workshop-2496686961 V: table: 000000005E8F1EC0 [00:11:57]: K: 1 V: 1 [00:11:57]: self.modactioncomponents is [00:11:57]: K: workshop-2496686961 V: table: 0000000066E81EB0 [00:11:57]: K: EQUIPPED V: table: 0000000066E810F0 [00:11:57]: K: weaponcaster V: function: 0000000045577490 [00:11:57]: K: INVENTORY V: table: 0000000066E81140 [00:11:57]: K: aspectinvoker V: function: 0000000045576D10 [00:11:57]: K: spellprinthandler V: function: 0000000045576AA0 [00:11:57]: MOD_COMPONENT_ACTIONS is
Last edited by Luneyl; 5 May, 2023 @ 6:33am
Fairy  [developer] 5 May, 2023 @ 8:48am 
I've tried to reproduce your problem with a server that has just my mod, your add-on (uncommented) and Insight, and I'm getting no crashes or warnings. The way you've implemented the tags is also fine, so it has to be one of the other mods you have enabled causing the issue- I'm not sure I'll be able to offer much help with that.
Luneyl 5 May, 2023 @ 11:55am 
Yes, it was one of the client mods my friend was using :DSTskull: sorry for this wall of useless text.
Fairy  [developer] 5 May, 2023 @ 12:20pm 
Lol, it happens, don't worry about it. Glad it's working now :cozybethesda:
Luneyl 29 Jul, 2023 @ 11:03am 
I am sorry to disturb you again but it appears that adding castable tags to custom weapons will eventually cause crash for Flaire player client.

The way I patched weapons:
AddPrefabPostInit("cane", function(inst) if GLOBAL.TheWorld.ismastersim then inst:AddTag("spellbladeflaire_wepOther") end end)

Error message is always the same:
ERROR: Mod component actions are out of sync for mod workshop-2971223092. This is likely a result of your mod's calls to AddComponentAction not happening on both the server and the client.

It keeps spamming this error untill log file is about 11MB and then crashes with this message:
[string "scripts/componentactions.lua"]:2541: attempt to index a nil value LUA ERROR stack traceback: scripts/componentactions.lua:2541 in (method) HasActionComponent (Lua) <2530-2552> scripts/actions.lua:839 in (field) strfn (Lua) <838-847> scripts/bufferedaction.lua:63 in (method) GetActionString (Lua) <50-64> scripts/widgets/itemtile.lua:338 in (method) GetDescriptionString (Lua) <310-359> scripts/widgets/itemtile.lua:301 in (method) UpdateTooltip (Lua) <300-308> scripts/widgets/itemtile.lua:362 in (method) OnGainFocus (Lua) <361-363> scripts/widgets/widget.lua:636 in (method) SetFocusFromChild (Lua) <622-647> scripts/widgets/widget.lua:669 in (method) SetFocus (Lua) <649-678> scripts/frontend.lua:900 in (method) DoHoverFocusUpdate (Lua) <891-905> scripts/frontend.lua:850 in (method) Update (Lua) <687-889> scripts/update.lua:95 in () ? (Lua) <33-138>

Crash report on pastebin (I removed a lot of repeating spam lines so it could fit in allowed size):
https://pastebin.com/rSLWkGpy

I know how it sounds, but it looks like this crash only appears with large amount of mods present, specifically mods that do any AddComponentAction.

I tried everything on my part, but even having single AddPrefabPostInit function and nothing else in modmain will crash the client if there are other "dangerous" mods.
Last edited by Luneyl; 29 Jul, 2023 @ 11:48am
Fairy  [developer] 31 Jul, 2023 @ 9:26am 
Hmm, could you try removing the GLOBAL.TheWorld.ismastersim check? It works fine either way with just the necessary mods installed on my end, but like you said this error might only occur with a ton of mods, though I wouldn't be able to say why. Apologies for the late reply, let me know if that helps.
< >
Showing 1-10 of 10 comments
Per page: 1530 50