Jump to content

"Sanity Stations" and you.


Recommended Posts

The big hub-bub over the last few patches from the beta is due to this usage of Abigail flowers, a ghost, and a Bee Queen hat.

See this thread for reference.

 

The idea is that Abigail flowers created by Wendy will decay into flowers after 3 in-game days of being left on the ground which then may be haunted to transform into evil flowers- these evil flowers produce negative sanity auras which the Bee Queen hat will reverse.

Sitting in a field of these evil flowers will regenerate more sanity than just having one.

zTk5Ll7.png

 

The Abigail flower will start degrading only after the owner of the flower has its link removed.

To remove your link to your self-made flower, you can either leave the server or go into the caverns after dropping it on the ground.

Immediately rejoining or going back to the overworld won't force the link to re-establish itself- the link is only made on having the item in a wendy inventory when it does not have a link already.

 

The reason why there were complaints from the beta branch changes was because Abigail flower now checks a radius around it if a flower may be spawned.

If it cannot under some criteria be spawned, then it will poof into flower petals instead.

The minimum distance from one Abigail flower to the next to provide working flowers is 0.75 units, or 0.1875 turfs away from each other.

The theoretical limit on the number of flowers in one spot was infinite before the change, letting users have a spot on the map that generates up to an infinite amount of sanity per second by standing on it- this has been fixed due to the huge amount of entities in one spot that interacts with bees and butterflies, causing huge server performance issues if someone was malicious enough to make a bunch and/or pick the flowers (world regrowth bug, also fixed).

 

Here is a table chart showing maximum efficiency for flower placement with how much negative sanity the center will provide (Bee Queen hat gives back 1/2 Drain as Gain) per second:

Spoiler

                Drain Per Flower
     Sanity Drain
Abigail Flowers needed
1    0.416667   0.416667
5    2.083333   0.4166666
9    3.564815   0.3960905556
13   4.305555   0.3311965385
21   5.490741   0.2614638571
25   5.861111   0.23444444
29   6.190329   0.2134596207
37   6.782922   0.1833222162
45   7.238762   0.1608613778
49   7.423947   0.1515091224
57   7.772531   0.136360193
61   7.937140   0.1301170492
69   8.233436   0.1193251594
81   8.588992   0.1060369383
89   8.816912   0.099066427
97   9.021255   0.0930026289
101  9.113847   0.0902361089
109  9.288139   0.0852122844
113  9.370444   0.0829242832
121  9.530604   0.0787653223
129  9.678752   0.0750290853
137  9.823287   0.0717028248
145  9.954974   0.0686549931
149  10.015443  0.0672177383
161  10.193220  0.0633119255
169  10.307180  0.0609892308
177  10.418990  0.0588643503
185  10.521161  0.0568711405
193  10.618308  0.0550171399
197  10.664604  0.0541350457
213  10.846940  0.0509246009
221  10.934086  0.0494755023
225  10.975238  0.0487788356
233  11.056416  0.0474524292
241  11.136496  0.046209527
253  11.247149  0.0444551344
261  11.319417  0.0433694138
277  11.458850  0.0413676895
285  11.525434  0.0404401193
293  11.591277  0.0395606724
301  11.652369  0.0387121894
305  11.682604  0.0383036197
317  11.771493  0.0371340473
325  11.830165  0.0364005077
333  11.887145  0.0356971321
341  11.943050  0.035023607
349  11.997417  0.034376553
357  12.049858  0.0337531036
365  12.100944  0.0331532712
373  12.151593  0.0325779973
377  12.176080  0.0322972944
385  12.224653  0.0317523455
401  12.319468  0.0307218653
405  12.342616  0.0304755951
421  12.433784  0.0295339287
429  12.477357  0.0290847483
437  12.520612  0.028651286
441  12.541188  0.028438068
457  12.622925  0.0276212801
465  12.663514  0.0272333634
473  12.703554  0.026857408
481  12.743325  0.0264933992
489  12.782057  0.0261391759
497  12.819802  0.0257943702
505  12.856839  0.0254590871
509  12.875128  0.025294947
517  12.911262  0.0249734275
529  12.963859  0.0245063497
545  13.033576  0.0239148183
553  13.067830  0.0236307957

 

Note the maximum radius is 10 units away for sanity to take effect on the player, and that the flower placements are 0.75 units away from each other in a grid with the player standing right in the center.

Here is that chart again but with an ASCII depiction of optimal flower placement to help understand squared-circles:

-Now on pastebin-

 

How many Abigail flowers you'll need depends on how much diminished benefits you'd want back.

Is 553 Abigail flowers really worth your time to get maximum sanity per second?  Probably not!

Is 13 a nice sweet spot, or is 21?  Only you can choose when your madness stops!

gpUddCo.png

 

But wait, what about square-based placement and sitting in the center of that?

Well, think of it like this..

Square-based shapes will have 4 flowers closest to the player with the player in the center of a square, whereas the diamond/circle one will have the player on a flower and have 4 flowers 0.75 units away.  This means the total flowers at full power is 5 which grants the best initial. 

The diminishing returns for sanity Drain is based on the distance from the player to the flower squared.  By having a square pattern each additional flower is going to be further to the player than the circle-center, adding even less than the circle-center.

The further a flower is from the player the worse it will Drain, and thus the less it will Gain.

 

 

Now, some people are going to wonder how you'd make sure the Abigail flowers dropped were exactly 0.75 units away from each other.

For that, a client mod is the best route.

Personally I use my own keybinds- this is generally for more advanced users of the game as it requires some knowledge on LUA and Klei's codebase.

More details about the keybind I use:

Spoiler

 

The slight edit to the drop item being:


local x, y, z = ThePlayer.Transform:GetWorldPosition()
x = (math.floor(x/.75)+0.5)*.75
z = (math.floor(z/.75)+0.5)*.75
SendRPCToServer(RPC.LeftClick, ACTIONS.DROP.code, x, z, nil, nil, nil, nil, nil)

 

And to situate yourself onto the center of the flower circle, either drop another item or send both a (LeftClick, WALKTO) and StopControl RPCs with the same alignment as the drop item one.

 

Who created this contraption/idea?

From what I gather several people thought of it around the same time the Bee Queen hat was a thing that existed, though this is hearsay without any real evidence other than statements made.

I've yet to see someone document it here on the forums other than mention it in passing, and I do love documentation.

Link to comment
Share on other sites

good information thought the spacing was .75 units as vito had mentioned in the stream  well first instance of actually doing it was from me during one of @Clwnbaby streams server being strictly unprofessional. That was really where it started to spread as clown ad streamed people continually asked how to make the initial stacked version. Good job on figuring how to maximize the current version

Link to comment
Share on other sites

1 hour ago, EsaiXD said:

good information thought the spacing was .75 units as vito had mentioned in the stream@Clwnbaby

Arr, it is 0.75.

Code checks 0.25 radius if no physics, and Abigail flower is 0.5.

I'll fix 'er up~

 

'Tis fixed with new distance, and added even more intervals for those looking to help find a sweet spot for those lookin' to maximize profits while minimizing input.

Link to comment
Share on other sites

10 minutes ago, CarlZalph said:

Arr, it is 0.75.

Code checks 0.25 radius if no physics, and Abigail flower is 0.5.

I'll fix 'er up~

I know you have made some slight mods to counter some of my arguments such as the lantern and stuff.  But, is it possible to get the drop spacing keybind you have to be 1 as well or the client mod you were talking about was just geometric placement to show the unit spaces.

1 hour ago, CarlZalph said:

For that, a client mod is the best route.

 

Link to comment
Share on other sites

@CarlZalph, So I tried to follow your dynamic custom keybinds post to get the drop keybind working with abigail's flower. I added all 3 of the files in the locations you stated, and copy pasted all the code into the files. I launch the game, open the console and then enter "cz_reload()". The console prints out saying that all 3 files were reloaded. The issue I'm having though is I can't get the 'Z' key to drop anything. When I click on an item in my inventory and then press Z nothing happens at all. I also tried pressing Z while hovering over an item in my inventory without clicking on it, and that didn't work either.

So is there anything else that I need to add or change to get the keybind working? I'm kinda confused because there's no feedback from the console so I'm not sure how to go about troubleshooting this.

Edit: I edited the 'R' keybind to Wave (because I don't have the yawn emote), and it worked perfectly. I think this means there's something wrong with the drop item code.

Second Edit: Actually the drop keybind works, but it only works on servers I'm not hosting which is kinda weird. Know any reason that might be happening?

Link to comment
Share on other sites

3 hours ago, smallishbird said:

Second Edit: Actually the drop keybind works, but it only works on servers I'm not hosting which is kinda weird. Know any reason that might be happening?

The code is under the assumption that you're on a server with caverns enabled.

Being a host without caverns means you are the server with no networked interactions at all, leaving RPCs out of the question.

 

I'm not too familiar with how the actions go about when the client and the host are the same.

I think it uses a buffered action which then talks to the inventory component directly, though it may still use the replica system.

 

After a bit of looking and fiddling, here's what I've come up with:

if not TheNet:IsDedicated() and TheNet:GetIsServer()
then
    local act = BufferedAction(ThePlayer, nil, ACTIONS.DROP, item, Vector3(x, 0, z))
    act.options.wholestack = true
    ThePlayer.components.playercontroller:DoAction(act)
else
    SendRPCToServer(RPC.LeftClick, ACTIONS.DROP.code, x, z, nil, nil, nil, nil, nil)
end

Which seems to function properly, though I'm not really checking much of anything in it for failure states.

Link to comment
Share on other sites

10 hours ago, CarlZalph said:

The code is under the assumption that you're on a server with caverns enabled.

 

Oh that makes sense. I didn't bother to enable caves for all my test worlds because I didn't think it was necessary. I only play with caves on when I'm playing for real anyway so it shouldn't be an issue now that I know. Thanks for the help.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...