From e05ee08c0589a13d41827a993ed09f4efc3f87fc Mon Sep 17 00:00:00 2001 From: Unkn0wn_Gh0st Date: Tue, 17 Dec 2024 19:30:21 -0600 Subject: [PATCH] Frontier Port: Pretty Money (#2398) * Frontier Port: Pretty Money * Update Resources/Prototypes/Entities/Objects/Misc/space_cash.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> Signed-off-by: Unkn0wn_Gh0st * Updated 100k texture --------- Signed-off-by: Unkn0wn_Gh0st Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> (cherry picked from commit da772611f8b2b02f21f801ccf255220602e850e5) --- Content.Client/Stack/StackSystem.cs | 21 +-- .../_NF/Stack/StackSystem.Layers.cs | 56 ++++++++ .../Properties/launchSettings.json | 8 ++ Content.Shared/Stacks/StackComponent.cs | 10 +- .../StackLayerThresholdComponent.cs | 13 ++ .../_NF/Stacks/StackLayerFunction.cs | 7 + .../Entities/Objects/Misc/space_cash.yml | 47 +++--- .../_NF/Entities/Objects/Misc/space_cash.yml | 21 +++ .../_NF/Objects/Economy/cash.rsi/cash.png | Bin 0 -> 286 bytes .../_NF/Objects/Economy/cash.rsi/cash_10.png | Bin 0 -> 292 bytes .../_NF/Objects/Economy/cash.rsi/cash_100.png | Bin 0 -> 291 bytes .../Objects/Economy/cash.rsi/cash_1000.png | Bin 0 -> 290 bytes .../Objects/Economy/cash.rsi/cash_10000.png | Bin 0 -> 695 bytes .../Objects/Economy/cash.rsi/cash_100000.png | Bin 0 -> 797 bytes .../Objects/Economy/cash.rsi/cash_25000.png | Bin 0 -> 681 bytes .../Objects/Economy/cash.rsi/cash_250000.png | Bin 0 -> 1145 bytes .../_NF/Objects/Economy/cash.rsi/cash_500.png | Bin 0 -> 299 bytes .../Objects/Economy/cash.rsi/cash_5000.png | Bin 0 -> 231 bytes .../Objects/Economy/cash.rsi/cash_50000.png | Bin 0 -> 701 bytes .../_NF/Objects/Economy/cash.rsi/meta.json | 136 ++++++++++++++++++ 20 files changed, 291 insertions(+), 28 deletions(-) create mode 100644 Content.Client/_NF/Stack/StackSystem.Layers.cs create mode 100644 Content.Packaging/Properties/launchSettings.json create mode 100644 Content.Shared/_NF/Stacks/Components/StackLayerThresholdComponent.cs create mode 100644 Content.Shared/_NF/Stacks/StackLayerFunction.cs create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Misc/space_cash.yml create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_10.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_100.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_1000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_10000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_100000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_25000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_250000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_500.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_5000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_50000.png create mode 100644 Resources/Textures/_NF/Objects/Economy/cash.rsi/meta.json diff --git a/Content.Client/Stack/StackSystem.cs b/Content.Client/Stack/StackSystem.cs index c081581338..f57f4d4e17 100644 --- a/Content.Client/Stack/StackSystem.cs +++ b/Content.Client/Stack/StackSystem.cs @@ -8,7 +8,7 @@ using Robust.Client.GameObjects; namespace Content.Client.Stack { [UsedImplicitly] - public sealed class StackSystem : SharedStackSystem + public sealed partial class StackSystem : SharedStackSystem // Frontier: add partial to class definition { [Dependency] private readonly AppearanceSystem _appearanceSystem = default!; [Dependency] private readonly ItemCounterSystem _counterSystem = default!; @@ -56,20 +56,25 @@ namespace Content.Client.Stack if (args.Sprite == null || comp.LayerStates.Count < 1) return; + StackLayerData data = new StackLayerData(); // Frontier: use structure to store StackLayerData + // Skip processing if no actual - if (!_appearanceSystem.TryGetData(uid, StackVisuals.Actual, out var actual, args.Component)) + if (!_appearanceSystem.TryGetData(uid, StackVisuals.Actual, out data.Actual, args.Component)) return; - if (!_appearanceSystem.TryGetData(uid, StackVisuals.MaxCount, out var maxCount, args.Component)) - maxCount = comp.LayerStates.Count; + if (!_appearanceSystem.TryGetData(uid, StackVisuals.MaxCount, out data.MaxCount, args.Component)) + data.MaxCount = comp.LayerStates.Count; - if (!_appearanceSystem.TryGetData(uid, StackVisuals.Hide, out var hidden, args.Component)) - hidden = false; + if (!_appearanceSystem.TryGetData(uid, StackVisuals.Hide, out data.Hidden, args.Component)) + data.Hidden = false; + + if (comp.LayerFunction != StackLayerFunction.None) // Frontier: use stack layer function to modify appearance if provided. + ApplyLayerFunction(uid, comp, ref data); // Frontier: definition in _NF/Stack/StackSystem.Layers.cs if (comp.IsComposite) - _counterSystem.ProcessCompositeSprite(uid, actual, maxCount, comp.LayerStates, hidden, sprite: args.Sprite); + _counterSystem.ProcessCompositeSprite(uid, data.Actual, data.MaxCount, comp.LayerStates, data.Hidden, sprite: args.Sprite); else - _counterSystem.ProcessOpaqueSprite(uid, comp.BaseLayer, actual, maxCount, comp.LayerStates, hidden, sprite: args.Sprite); + _counterSystem.ProcessOpaqueSprite(uid, comp.BaseLayer, data.Actual, data.MaxCount, comp.LayerStates, data.Hidden, sprite: args.Sprite); } } } diff --git a/Content.Client/_NF/Stack/StackSystem.Layers.cs b/Content.Client/_NF/Stack/StackSystem.Layers.cs new file mode 100644 index 0000000000..2893d32d3f --- /dev/null +++ b/Content.Client/_NF/Stack/StackSystem.Layers.cs @@ -0,0 +1,56 @@ +using Content.Shared.Stacks.Components; +using Content.Shared.Stacks; + +namespace Content.Client.Stack +{ + /// + /// Data used to determine which layers of a stack's sprite are visible. + /// + public struct StackLayerData + { + public int Actual; + public int MaxCount; + public bool Hidden; + } + + public sealed partial class StackSystem : SharedStackSystem + { + // Modifies a given stack component to adjust the layers to display. + private bool ApplyLayerFunction(EntityUid uid, StackComponent comp, ref StackLayerData data) + { + switch (comp.LayerFunction) + { + case StackLayerFunction.Threshold: + if (TryComp(uid, out var threshold)) + { + ApplyThreshold(threshold, ref data); + return true; + } + break; + } + // No function applied. + return false; + } + + /// + /// Sets Actual to the number of thresholds that Actual exceeds from the beginning of the list. + /// Sets MaxCount to the total number of thresholds plus one (for values under thresholds). + /// + private static void ApplyThreshold(StackLayerThresholdComponent comp, ref StackLayerData data) + { + // We must stop before we run out of thresholds or layers, whichever's smaller. + data.MaxCount = Math.Min(comp.Thresholds.Count + 1, data.MaxCount); + int newActual = 0; + foreach (var threshold in comp.Thresholds) + { + //If our value exceeds threshold, the next layer should be displayed. + //Note: we must ensure actual <= MaxCount. + if (data.Actual >= threshold && newActual < data.MaxCount) + newActual++; + else + break; + } + data.Actual = newActual; + } + } +} diff --git a/Content.Packaging/Properties/launchSettings.json b/Content.Packaging/Properties/launchSettings.json new file mode 100644 index 0000000000..33504c948a --- /dev/null +++ b/Content.Packaging/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "WSL": { + "commandName": "WSL2", + "distributionName": "" + } + } +} \ No newline at end of file diff --git a/Content.Shared/Stacks/StackComponent.cs b/Content.Shared/Stacks/StackComponent.cs index 7137f8c0c2..b18f9b0d05 100644 --- a/Content.Shared/Stacks/StackComponent.cs +++ b/Content.Shared/Stacks/StackComponent.cs @@ -24,7 +24,7 @@ namespace Content.Shared.Stacks /// [ViewVariables(VVAccess.ReadOnly)] [DataField("maxCountOverride")] - public int? MaxCountOverride { get; set; } + public int? MaxCountOverride { get; set; } /// /// Set to true to not reduce the count when used. @@ -78,6 +78,14 @@ namespace Content.Shared.Stacks [DataField("layerStates")] [ViewVariables(VVAccess.ReadWrite)] public List LayerStates = new(); + + // Frontier: transforming Amount, MaxCount in speso stacks + /// + /// An optional function to adjust the layers used for a stack's appearance. + /// + [DataField] + public StackLayerFunction LayerFunction = StackLayerFunction.None; + // End Frontier } [Serializable, NetSerializable] diff --git a/Content.Shared/_NF/Stacks/Components/StackLayerThresholdComponent.cs b/Content.Shared/_NF/Stacks/Components/StackLayerThresholdComponent.cs new file mode 100644 index 0000000000..98d3bb0e61 --- /dev/null +++ b/Content.Shared/_NF/Stacks/Components/StackLayerThresholdComponent.cs @@ -0,0 +1,13 @@ +namespace Content.Shared.Stacks.Components; + +[RegisterComponent] +public sealed partial class StackLayerThresholdComponent : Component +{ + /// + /// A list of thresholds to check against the number of things in the stack. + /// Each exceeded threshold will cause the next layer to be displayed. + /// Should be sorted in ascending order. + /// + [DataField(required: true)] + public List Thresholds = new List(); +} diff --git a/Content.Shared/_NF/Stacks/StackLayerFunction.cs b/Content.Shared/_NF/Stacks/StackLayerFunction.cs new file mode 100644 index 0000000000..c655f3f76c --- /dev/null +++ b/Content.Shared/_NF/Stacks/StackLayerFunction.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Stacks; + +public enum StackLayerFunction +{ + None, + Threshold +} diff --git a/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml b/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml index 57dfb40098..5321a20fa7 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml @@ -25,9 +25,17 @@ - cash_100 - cash_500 - cash_1000 - - cash_1000000 + - cash_5000 # Frontier: larger denominations + - cash_10000 # Frontier: larger denominations + - cash_25000 # Frontier: larger denominations + - cash_50000 # Frontier: larger denominations + - cash_100000 # Frontier: larger denominations + - cash_250000 # Frontier: larger denominations (cash_1000000czH&sY$$Bay^!}nd$O=`|>(|$0ExHJsFL432|L|G7_`SXB)g0c38`9@lN@^$+OiU PXEJ!Y`njxgN@xNAi{)a9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_10.png b/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_10.png new file mode 100644 index 0000000000000000000000000000000000000000..05c477501682b5b2bd84e241465690655a617e43 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijS1AIbU6KpwIEL{2A6L*%1J2g&J&8a)LPhju#^2?_cnN{_Gsy-#{*bbz) zOM?7@|HA=;mp|htpfG2FM`SSr1K(i~W;~w1A_XW|>gnPbV&VU`{~+IC0}f~It%@iA z*B9(&E%FF^8@2N5QLeg(l~WJCY} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_1000.png b/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_1000.png new file mode 100644 index 0000000000000000000000000000000000000000..6a5688cd866d413a9e40239c01388bd43c060164 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijS1AIbU6KpwMnVDmln0A(mck61G$jhJGC$M*V`Q_7!>g+5)RcDU6_W&vG zk|4j}|8T(I<8F~A3d{^HCE!x^RG$Igq<|mWA`h6 UX5A}07ic|$r>mdKI;Vst04zjh5&!@I literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_10000.png b/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_10000.png new file mode 100644 index 0000000000000000000000000000000000000000..3400ef8a0a2e3fd72274d9947b709e01455e9f31 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&DF*n2xF*}%WQZeW4?B1dl z1)dgvea5Qy{|}h{5NAnRo>6FZ+9x`fPsI=K z==ok{pmzCP_j-mS=d9&4EN~#em%~l%Jj`}h#ccZiHJss_kB>5YWNey@ zSU};luPdeGAO8xovz)qK+aa4(%X-05rjvYLKaGx`5VxBi+VE)GGubIx8;)v=Uii6` zYsH@;)<4^tS4P}Rx4!e}GXML}*$L;T=Y0CQBjxuSsTXzPYaZ{FUCMn&ES_QCwU4*@ zCb7Qjwts4$xStW?S}1ArbmflyMnS*!ugaSnw0)Vq!?JpTt7{+f_Z0r!wXgrx%@6E% z*35rfv+WOK^McY$8^MB#v{`u)wC2Lu2{5pqM@)G|XmNK#bKlp)t(XR9B8;{5* z9JZgqck&B=&7a}}@(uPMF1OrfN3rw6l;w~9o$`47-(_!FVP*N9SNt6}m(?G*Wv}st z-{t>-FYHSWAAH3x@Hg&!|6jqIx4(PcKQ0^fYkwHyt+I@7;sK8iJo$GZhHuoFU%5kHtlI1!w0!8}x)9fx@Uq&x_W5b;1z)RIGI`b?loh@3>+Zjr z1AjQ1S2OOq&)WNIzvP0@|K`jg=g&Wj=lk#+lmZ>f8}irrxrgO0?rQ~k*wfX|Wt~$( F69CToKhFRF literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_100000.png b/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_100000.png new file mode 100644 index 0000000000000000000000000000000000000000..707382f69b63b9987106ce907fbf69410b3097e4 GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^4M4nrgBeJE_L*`XNGS&Rgt!9fNizC7l&yD`ia!p@ zy4<04ZlAzCtBA{|6(a;?fU@1K=e&RvcS(?6@P9a9@bYK;#K6F`z|+Msq+-t7Io$cp z20Sg&uWWAp|KHrs*=oaY)#z|Fb=Hw*7Jnagt}8G7RS|C^$D+W%$l<`iBx1kc?3ujW ze8w{d{m-8#ome(k{69lSY1p2L3ThRc2gSM9d{nUOxqo-Z#T=1xzdbvI4!qV+{oojW z{kVph$D=sTrPA^yw|D2=dD%L76_ee{20N#n%=^O_Uzx4i9ToI{r z$}g-sAoM;&;cR|rLT5AAjvdW~tG2F{J@#XVVD{_%A7`z6l6S-D_f6+3^um8K zEkByx5N^AP^<4M;r!zn7a%5lQW4o%7PZ;ChB%>}k{M1%CZ= z2sse&U;cr72t((-{@pIW{xkevu)L;7k-^n=CfkMAAH)~ z@b7@p=U(=|jL2U3W5@8f@%-+`FKQag1Q`CVzj?#n<8Qm$e}_5EznM4KFOcO^sDD-9 z@SJ;=^_R$Y)+_(da;f}t+Rfxz&v5O#hTRdV<{Ho6+_Ro@Kls_;dH3*VW; z{9iB|mxTvzuJ5X5NY`GR+wi8wVfAi1Yx{;T`#a|ce9(2cCBJ}6=EeUXoU8}rGfJMn zU(s-0o8fEiYG}m)JWL)E`*)uclQs_!$!)QQh|!=J-6 p=Pi&}qn&%k{xvk-9uzg$uX4U|6>kmD z%5#uEw@+a2^zzH673KL^fT|8k@V5df?vfzC;Qw&I;N{QwiGhJh$J50zq+-t7*$?v$ zEAX^A&S{eU7=(suW?6hV;<@}R z(^S3Ah3lVZ-D5KO`jOA`HG^);O6FU#msT@hxqkP~;eC3Qt+DKBYiih++&#F;|IVGp zRo$`rQS3E}U+x`${*F(3?qeQjf8!J7K*RsO%YX2#+)?uU*Hy6(jA|KwXg%H-XUZM3 zy#AE>!&*>4A;6C*`A5H7FSe5RxOedcdrNlx{_CF)pWsjXfA2iIOZoQDx(hp^UH^yf z+i;%!$&{J{7lOB5YCN^S`|W$zw+>VFSIB0(p2~OSpM7P`;s3|Wq<%JfUv;Z{Q1h=; zLEgdcL*BusSZ%v@|Ml+stM{)j-#_)&yxn@wxuwe2K4q@_f9KwR^Yi>GcE2y(moQ&` zLM5xV{ELzmJ08y|n6c|x~H3;v4Sn2iJ|FjRR_$}V``Lb*Mm)pYfWGTCkj<eF9F66IFBSTur<6<%?PLS(sJzI2bftSX>jB z5?z^@W0;sa4ZF$}E4p>HOXTHsnRV6KSzN&&JUl!vFR!7YK}}6f$e3Bem03Sd%DO;> zN0G%^iaAJyInP19H9$+ApG8|++sVlZs6H(%O+-Xwl8pWiW$SxZ5s!niA_Qf2d0*HI zbhAZCkYDhBynq3xtcK1T0|o|W4^J1zkc`H+(|i4H8;G`+L(((RZ7p^{l>S z&1t!tzt?Y$UA|4#dge0E&Lb-F+AkWk>;FAb*m?1KqcE!j1B(O09_Iu18~)p@|6fqL zR@rA~nO&LjCBbDqbAI05*k_RXhB1lh=*du>$Jz>h4EzQUf1do3rlfu##8xih*yqhZ z-};I}&VMHxKHZ0?#VJiQ=srgGnHhUvx% zVT!K|9E#bFXw+HpT$saX*d;G-@FO}!DW{lG?U0#x0*E2+qjY-?tKBS@ZI++s1KBYR zX9ND9JgmyVqyRXp>3mMw zVVZI~d&FARlV2})J+Ca4(`63g%b9S`lrNSoNYdoD`!nV%|D>6>)_-_mG@^J)`w&oRY=Jo+;q$ksccR%6f6zyL#a49<78=9ya^n$r7u+j~C^bOb9GI&k_qm(^4pj1NS)&hkjiHRWpd5A8$Cb@xe3S*&a*8GDH z@+Wp~ILkVN0~l8zMvZxAPO;dJM4_9{&ipq4vKh@D{&obVPYC+L{6cnxxXnCZge{-P zXnOzs>(3jfeci}*&h!`Cob0$Qc5_wz5}2;fWBeK^{b0qn{^Iv+OJuejoGIF7&|t@$ zB=MCO5~5$Zf20cCyr%!4fB$#B7q*N74F4G)n4hk%nl|5Zp$srzGI+ZBxvXjB5_gu0cN%t;D^{G_C$M*V`Q_7!lU%3hGV1~r)>K-k z11X-8Aiv=M2*4n8|J*sCIA?)JWHAE+-(e7DJf6QI1t?hI>Eak-;s3V(piqMXhYNF} z=HLJS&kEUO_+C%TvNhP$FFO6x0{M(8Wdq)d<{MM@7@03-USyzgQma8Oo#jeMNJMz+ zjD*9XO>;O|td*9vSoIq>YFAE8n3xbYe{&{#{NI1#3!h9~A<6jU!Xwk?X)G5^?>#@Z d!k=O3n_YV9CDpgX+<|Uj@O1TaS?83{1ON@*Z1eyC literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_5000.png b/Resources/Textures/_NF/Objects/Economy/cash.rsi/cash_5000.png new file mode 100644 index 0000000000000000000000000000000000000000..36ff38c4d47c3d5e5b265adf17a86e7a6293a64d GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyiUB?$t_ilBuCA`(;o&<=#TyzL z^78V|?GxBLz5McNMKv`wpelpMS2=+ccS(?6@P9a9@bYK;1QgElba4!^=zTlkHdlj! zfXm)DXQKZ9KbZTFYo*{`R#OF@qHj7<*JiiKSLhn>Te;_Xv~o7Y}ovUtB{b9eO)Qz^T%OqTn0 z{E+psS+o90d(L%67N^qO6oyS3J-d)^iM$FRC@v;Bgn>|bM6gpj1Ke?S)FTJdKsc-O?xrX)CKZd>g9eR)FtgS!r zBSO#h|8YL1$p7l%c<_tYD(&G;u0^M;>?aosoeHikzvCI4^!_{}+A4rJ#t=0D7r7CAd^{8F$L#P@Xd Kb6Mw<&;$VBi#yx^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Economy/cash.rsi/meta.json b/Resources/Textures/_NF/Objects/Economy/cash.rsi/meta.json new file mode 100644 index 0000000000..ab0be10c51 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Economy/cash.rsi/meta.json @@ -0,0 +1,136 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Modified by EmoGarbage404 and taken from https://github.com/goonstation/goonstation at commit b951a2c12d967af1295a3e6d33a861e7e1f21299. cash_5000, cash_10000, cash_25000, cash_50000, cash_100000, cash_250000 modified by Whatstone (Discord)", + "states": [ + { + "name": "cash" + }, + { + "name": "cash_10" + }, + { + "name": "cash_100" + }, + { + "name": "cash_500" + }, + { + "name": "cash_1000" + }, + { + "name": "cash_5000" + }, + { + "name": "cash_10000", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "cash_25000", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "cash_50000", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "cash_100000", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "cash_250000", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +}