IRC logs for #openttd on OFTC at 2017-03-04
⏴ go to previous day
00:00:41 <supermop_> so maybe rough gets brown dirt, basic gets wood ties on gravel, and modern gets concrete ties
00:09:12 *** Supercheese has joined #openttd
00:10:25 <Samu> i got a terrible programming issue
00:10:52 <Supercheese> Is that a terrible issue with programming, or an issue with terrible programming? ;)
00:12:45 <Samu> the way openttd processes the code
00:13:25 <Samu> it first gets the engine at the front, sends it to the GetRunningCost and comes up with the result
00:13:50 <Samu> then gets the next unit after the front, and discards the first one
00:14:17 <Samu> sends it to the GetRunningCost and comes up with the result
00:14:40 <Samu> then repeat, 2-unit train, sent to runningcost, 1-unit, running cost
00:15:05 <Samu> so basically, there's 4 trains
00:15:18 <Samu> I dunno how to solve this
00:24:52 *** HerzogDeXtEr1 has joined #openttd
00:37:32 <Samu> hmm I think i understand what's going on
00:37:50 *** supermop has joined #openttd
00:53:19 <Samu> GetCargoSummaryOfArticulatedVehicle
00:53:32 <Samu> I need something similar to this, but for RunningCost
00:54:06 *** Biolunar has joined #openttd
01:04:54 <Wolf01> You were looking for "I need to do something similar to..."
01:21:17 *** supermop has joined #openttd
01:31:40 *** smoke_fumus has joined #openttd
02:28:43 *** FLHerne has joined #openttd
03:38:51 *** Supercheese has joined #openttd
04:01:23 *** markasoftware has joined #openttd
04:39:13 *** supermop__ has joined #openttd
06:05:42 <DorpsGek> Supercheese: Error: invalid syntax (<string>, line 1)
06:06:14 <Supercheese> Google it is then
06:07:39 <Supercheese> maybe it was @convert or something
07:25:21 *** sla_ro|master has joined #openttd
07:28:52 *** Alberth has joined #openttd
07:28:52 *** ChanServ sets mode: +o Alberth
07:50:44 *** andythenorth has joined #openttd
07:52:57 <andythenorth> to my mind, the CPP approach of dumping constants into one global namespace
07:53:15 <andythenorth> but…it makes for very compact templating :P
07:53:42 <andythenorth> no obj.obj.property or obj.method(obj.property) stuff
07:54:06 * andythenorth removing CPP from FIRS slowly
07:56:11 <Alberth> it's not designed to do large scale complicated replacements
07:56:37 <andythenorth> it’s a powerful tool that goes a long way fast :)
07:56:49 <andythenorth> but when it hits the limit, it hits it quite hard
07:57:38 <Alberth> it is, but "working" and "the correct approach" are two different things, which are sometimes seemingly well aligned
07:58:34 <Alberth> I agree it's better to do without CPP, Python is a much more capable solution
07:58:39 <Alberth> at the cost of more work
07:59:13 <andythenorth> all of the ‘var_leftover_cargo_1’ etc are CPP defines, mostly global
07:59:34 <andythenorth> it’s technically trivial to do, but will make word soup :P
08:00:32 <Alberth> I'd keep it, probably
08:00:39 <andythenorth> var_leftover_cargo_1 -> ${industry.get_perm_storage_num[‘var_leftover_cargo_1’]}
08:00:50 <andythenorth> does not aid reading a complicated templated switch :)
08:01:21 <Alberth> yes, if you go all the way, things become unreadable
08:02:09 <Alberth> you could introduce new names in your ${} thingies
08:02:24 <Alberth> to make the templates more readable
08:02:59 <Alberth> but generated code is barely readable, and pretty much non-modifiable
08:03:24 <Alberth> keeping the #define improves things at that level
08:04:30 <Alberth> In C++, the general direction is to eliminate #define, and replace with "inline" functions and "const" variables
08:04:45 <Alberth> ie the C++ languages itself provides safer alternatives
08:06:13 <andythenorth> chameleon has template local defines, so they’re in the root namespace within a specific template block
08:06:33 <Alberth> I once looked into NML having better templates, but it became very messy very fast
08:06:33 <andythenorth> eg define=“var_leftover_cargo_1” and then use it as ${var_leftover_cargo_1}
08:06:41 <Alberth> too many hacks around the parser
08:07:02 <Alberth> local defines look nice
08:07:20 <andythenorth> they’re generally frowned up by chameleon users, it creates annoying local indirection
08:07:36 <andythenorth> it’s preferred to put them in the backing view / object
08:08:02 <Alberth> and local indirection is bad for computation costs?
08:08:12 <andythenorth> bad for readability
08:08:33 <andythenorth> if FIRS production code was simpler, this problem would go away :D
08:08:46 <Alberth> you have to be careful what to #define as well :)
08:09:45 <Alberth> although at the point of using ##, I think you're a few miles beyond that :)
08:10:52 <Alberth> I think to some extent, NML code isn't really designed from the higher level
08:11:17 <Alberth> it basically mirrors the action codes, and leaves combining the primitives to the user
08:12:05 <andythenorth> I find it easy to template, because it’s exactly akin to templating html
08:12:11 <andythenorth> which has the same issue
08:12:27 <Alberth> perhaps the higher level isn't really possible, as you'd cut of parts of the available design space
08:12:29 <andythenorth> but the techniques for good html templating took 10 years to develop :P
08:13:02 <Alberth> ie you'd end up with grfmaker-ish solutions, in the extremely simple-ish case
08:13:22 <andythenorth> yes: at first glance it looks easy to move NML up one level. Could define a vehicle object etc, and hide away all the code
08:13:30 <andythenorth> but then the varaction2 chains....
08:14:43 <andythenorth> I know how I’d re-design it, but I’m fairly certain I’d be wrong
08:15:35 <Alberth> tbh, I don't think 'switch' is a right primitive, an if-tree would be nicer
08:15:50 <Alberth> computer can generate switches
08:15:58 <andythenorth> I find the switch syntax non-intuitive
08:16:27 <Alberth> yep, it maps directly on action2 sequences
08:16:45 <andythenorth> tbh, if the complex FIRS switches hadn’t been written by pm, yxo, hirndo etc…I’d never have grokked how to do them
08:16:54 <Alberth> no code generation required there :)
08:17:46 <andythenorth> expressions [] have remarkable power :P
08:17:59 <Alberth> I can see that, there is a lot of combined functionality hidden in the switch
08:18:47 <Alberth> but you'd want to write code more like plain imperative programming, eg Python function or C statements
08:19:39 <andythenorth> it’s also a bit heavy on syntax
08:19:43 <andythenorth> ‘said the python programmer'
08:20:07 <Alberth> yeah, too much functionality packed in it
08:20:55 <andythenorth> putting aside the syntax…
08:21:09 <andythenorth> instead of FEAT_XXX and id
08:21:20 <andythenorth> I would rather have wrapped entire blocks of nml in a scope
08:21:27 <andythenorth> e.g. specific vehicle, industry, tile etc
08:22:08 <andythenorth> this actually mirrors how most of nfo works when it comes to variable access
08:22:29 <andythenorth> and it means the objects could be extend with props that aren’t in the nfo spec
08:22:48 <andythenorth> and trivial templating could then be used
08:23:34 * andythenorth should make a pate
08:31:03 <andythenorth> it localises all switches etc; there would need to be a method to access global switches, as that’s an nfo feature which is occasionally very useful
08:37:04 *** ChanServ sets mode: +v tokai
08:39:37 <Alberth> you just move FEAT_ROADVEHS up one level? or are the switch names now also limited in this scope?
08:39:47 <Alberth> (and other names, I guess)
08:40:05 <andythenorth> switch names are limited in this scope
08:40:14 <andythenorth> there would have to be a way to break out of that
08:40:25 <andythenorth> but eh, most people would never need it, especially in vehicle sets
08:40:37 <andythenorth> and people like MB who understand all this…have their own solutions
08:41:11 <andythenorth> I wonder if it would be more performant, because there was a half-idea that figuring out switch IDs in a global namespace is slow
08:41:22 <andythenorth> I dunno if that was profiled though
08:41:47 <Alberth> slow in nml, you mean?
08:42:12 <Alberth> wouldn't expect so, tbh
08:42:31 <Alberth> nml gets killed by too much copying of data
08:43:31 * andythenorth did consider going back to nfo, and templating it with chameleon :P
08:43:38 <andythenorth> it would be maybe 5x faster to compile
08:44:05 <Alberth> quite possibly a lot faster :)
08:45:32 <andythenorth> somewhere my idea gets paired with simple ${name} templating
08:45:41 <andythenorth> but I can’t figure out why that’s useful
08:46:18 <Alberth> you may end up with something like m4nfo
08:46:30 <Alberth> which is basically also just a big set of templates
08:47:31 <andythenorth> ah, interesting. The majority of my chameleon use is something like ‘${vehicle.id}_some_switch_name’
08:47:36 <andythenorth> because all switches must be named :P
08:47:44 <andythenorth> the scope idea eliminates that need
08:48:52 *** zeknurn has joined #openttd
08:48:57 <Alberth> it would also fix the need for ## in CPP :p
08:50:00 <andythenorth> 7 uses of ${stuff} just to create switch ids
08:50:56 <andythenorth> ha if nml did ${some python code}
08:51:06 <andythenorth> then the parser could call eval() on it
08:51:12 <andythenorth> no risk there :P
08:52:18 <Alberth> there are ideas in newer pythons for doing such things with string formatting
08:52:43 <andythenorth> you mean Template(), or something else? o_O
09:01:07 <andythenorth> still not sure why templating is useful inside vanilla nml
09:01:40 <andythenorth> now wondering if nml-native templating would make life more complicated for people applying their own templates
09:01:50 <Alberth> it eliminates CPP templating
09:03:00 <Alberth> ie no need for CPP any more, thus no mingw
09:03:08 <andythenorth> which would be eliminated by a scope
09:05:11 <Alberth> local/global could be done by defining global names outside any scope
09:06:55 <andythenorth> I’m not sure whether nml should go an extra step
09:07:22 <andythenorth> and introduce prototypes
09:08:01 <andythenorth> e.g. prototype (ROAD_VEHS, town_bus) { [properties and switches] }
09:08:18 <Alberth> isn't that just a template?
09:08:43 <andythenorth> I would expect to handle all that myself, using my preferred templating tools
09:08:57 <andythenorth> but it might aid people who write out a lot of nml long-hand
09:09:10 <Alberth> add template facility to nml, and $someone can make a set of such templates
09:09:11 * andythenorth thinks of the FIRS forks
09:09:32 <andythenorth> GarryG and spiff are doing it the hard way, by modifying the nml output :P
09:09:38 <Alberth> yeah, your code generation is likely very much magic to a lot of people
09:09:38 <andythenorth> it’s not even nicely formatted for them :P
09:11:33 <Alberth> Well, it's easy to understand, it just takes time to change things
09:11:53 <andythenorth> it’s yak-shaving :)
09:11:54 <Alberth> We have not that much patience, so we resort to magics :)
09:12:16 <andythenorth> they get bugs because they are manually maintaining 40 identical switches :)
09:12:50 <Alberth> sure, and without even the basic understanding of what things do
09:13:17 <Alberth> so I think it's amazing they get anything done
09:13:35 <Alberth> not sure if a template would improve things there
09:14:10 <Alberth> I mean, if you don't know NML, adding a template language layer on top of it would improve things?
09:14:17 <andythenorth> it requires the understanding of what’s common and what’s not
09:14:38 <andythenorth> and if the templates can’t be broken up further into sub-templates / macros, then it’s hard to get proper reuse
09:14:38 <Alberth> somewhat, I think NML could do stuff there as well
09:14:48 <andythenorth> I think it’s hard to win
09:15:02 <Alberth> nfo is a complicated language
09:15:28 <Alberth> much more complicated than eg C or Python
09:15:50 <Alberth> all kinds of dedicated purpose constructs
09:16:06 <andythenorth> scopes, I see no downside; nml-native templating, might be a tarpit
09:16:27 <Alberth> nml-native templating just kills CPP, nothing more
09:16:54 <Alberth> and for people like you, it has no value, as you prefer your own stuff
09:17:10 *** supermop_home has joined #openttd
09:17:28 <andythenorth> constant-subsitution (with local / global scope), might be useful
09:17:34 <Alberth> I wonder though, how much CPP would you need with scopes?
09:17:34 <andythenorth> it it can be made easy to understand
09:18:01 <Alberth> it would mostly become a sequence of #include
09:18:05 <andythenorth> CPP tends to be useless for the id stuff, it requires variadic macros which are bad
09:18:35 <andythenorth> I think CPP is mostly being used for #include and constant substitution
09:19:44 <Alberth> so you'd need a "const myvalue = 1+3;" like thing?
09:19:46 <andythenorth> constant substitution is helpful for things like “self.label_refits_allowed = ['FRUT','WATR’]” where that is shared by 10 vehicles
09:20:09 <andythenorth> self.label_refits_allowed = {global_edibles_tankers}
09:20:23 *** supermop_ has joined #openttd
09:21:35 <Alberth> const edibles_cargoes = ['FRUT', 'WATR']; self.label_refits_allowed = edible_cargoes;
09:22:03 <andythenorth> w.r.t includes, I am agnostic
09:22:34 <andythenorth> I would always prefer to write my own compile, so I’m not a good person to specify
09:22:55 <andythenorth> but actually the #include format seems pretty straightforward, as long as circular refs are banned
09:23:42 <Alberth> CPP allows them, but runs out of stack space for circular references :)
09:24:22 <andythenorth> hmm, #include for e.g. an entire vehicle in one file is intuitive
09:24:27 <andythenorth> with one master file that assembles them
09:24:44 <andythenorth> it could also be used for fragments of code, by people who make that leap
09:24:54 <andythenorth> it wouldn’t be formalised templating, nor would it break
09:24:58 <Alberth> gives very loooooong error messages ("out of stack at line x of file bla, included from line y of file bla .....")
09:25:29 <andythenorth> so the problems seem to be:
09:25:40 <andythenorth> - managing IDs (yak-shaving)
09:25:47 <andythenorth> - constant substitution
09:25:52 <andythenorth> - file inclusion
09:27:09 *** Biolunar has joined #openttd
09:28:20 <andythenorth> templating I think is non-winnable
09:28:26 <andythenorth> and I am on the fence about file inclusion
09:29:26 <Alberth> is pretty simple to hook into the parser, normally
09:29:46 <Alberth> except it's currently useless, as CPP does it all
09:30:04 <Alberth> and current parser of NML has too much magic
09:30:16 <andythenorth> I find it magical :)
09:30:26 <andythenorth> the rest of nml is pretty easy
09:30:55 <andythenorth> it’s just a giant set of substitutions :P
09:34:04 <Alberth> :o I have the reverse experience :)
09:34:20 <Alberth> I can see how the parser works, everything else looks like magic :)
09:34:55 <andythenorth> I understand conceptually that it must build a tree of objects
09:36:42 <Alberth> don't try to understand how the parser internals work, it's magic :)
09:37:04 <Alberth> just understanding how the rules and the code attached to the rules work is enough
09:37:39 <Eddi|zuHause> parsers are a solved problem, they basically did not change since the 70s...
09:38:06 <Alberth> false, there are developments in stronger parser algorithms
09:38:07 <Eddi|zuHause> you just feed them a set of rules, and they build you a tree
09:38:46 <Alberth> LALR(1) does impose some limits that you don't always want
09:38:48 <Eddi|zuHause> Alberth: details :p
09:39:36 <Alberth> let's talk again after you embedded eg SQL in C++ or so, eh? :D
09:40:36 <Alberth> switching between languages in the middle of programs is very useful, but standard parser technology can barely handle a single language
09:41:27 <Alberth> afaik that is where a lot of parsing research is aiming for
09:47:12 *** FLHerne has joined #openttd
09:47:25 *** ConductorCat has joined #openttd
10:07:06 *** synchris has joined #openttd
10:09:20 *** andythenorth_ has joined #openttd
10:15:11 *** Progman has joined #openttd
10:29:47 *** andythenorth_ has joined #openttd
10:32:23 *** gelignite has joined #openttd
10:42:14 *** HerzogDeXtEr has joined #openttd
10:47:56 *** andythenorth_ has joined #openttd
10:51:35 <Samu> I did it! but a small issue
10:51:56 <Samu> the line describing kirby paul is too big
10:52:28 <Samu> running cost of kirby paul doesn't fit on a default sized window
10:53:50 <Samu> and it looks like i have another problem, running cost of bus is £0 for some weird reason
11:05:25 <Samu> plz explain me what is this doing exactly?
11:05:26 <Samu> virtual Money GetRunningCost(bool single_part = false) const { return 0; }
11:06:16 <Samu> when trying to get the running cost of a bus, I get this function doing a return 0
11:07:45 <Wolf01> Mmmh, html2text, how should I convert <p> vs <br/>?
11:08:35 <Samu> isn't <br> a enter or a paragraph?
11:09:29 <Wolf01> I need to check what richtextbox allows
11:10:40 <Wolf01> Mmmh textBox1.Text = generatedCode.Replace("\n", Environment.NewLine);
11:11:29 <crem> Any german speakers online? "Wir haben genug Zeit, um den Zug zu bekommen." <- isn't "um" here a mistake?
11:11:32 <crem> Sorry for a bit of offtopic. :)
11:11:48 <Wolf01> Lol... this channel IS offtopc
11:14:58 <Samu> the problem that I have is that I wanted to make GetRunningCost() for trains to be different than the others (ship, aircraft, road vehicle)
11:15:27 <Samu> it appears to be working good for trains now, but all other vehicle types are getting a 0 in running costs, where did I fail
11:23:53 *** andythenorth has joined #openttd
11:28:42 <Wolf01> Now the most difficult part... I need a name for a class which handles text manipulation
11:28:56 <Wolf01> Names are always the most difficult part for devlolopers
11:29:45 <andythenorth> write a name generator
11:30:01 <andythenorth> name all classes starting at ‘a’
11:30:02 <Wolf01> But not suitable for this
11:30:23 <andythenorth> when you get to z
11:30:23 <Wolf01> That's code obfuscations
11:30:36 <andythenorth> I have employed more than one person who wrote that way
11:30:41 <andythenorth> ‘it was more efficient’
11:31:20 <Wolf01> Did you had to kill them?
11:35:05 <andythenorth> so are we re-writing nml? o_O
11:36:12 <Wolf01> I would like a more evocative name, some verb transformed to noun maybe, like the classic "inflector"
11:37:04 <andythenorth> nml rewrite paused then :P
11:40:03 <Wolf01> Stringulator (from strangulator)?
11:50:33 *** Stimrol has joined #openttd
11:52:54 <andythenorth> is it a simple method, or a complex tool?
11:57:10 <Wolf01> A class with a collection of static functions to manipulate text
11:57:45 <Wolf01> Like stripping html tags, replacing br to newlines...
11:58:22 <andythenorth> if in doubt, add ‘utils’ :P
11:58:33 <andythenorth> every project has a ‘utils’ file of shame
11:58:54 <Wolf01> I have a Utils folder of shame
12:11:02 <Wolf01> Mmmh... textixulator... nah too weird
12:21:04 <andythenorth> I gave up novelty names
12:22:06 <andythenorth> less brain on names, more brain for writing less code
12:22:27 <Samu> only the Armoured Van does not have a running cost by default, I calculated it for it
12:22:31 <Wolf01> Samu, I hope running costs don't change with length and engines, btw it seem good
12:23:22 <Wolf01> Also why the running cost is 5 times the value of the wagon?
12:23:50 <Wolf01> I'll sell the wagon and wtf valuables
12:23:53 <Samu> it's exposing a flaw in my formula
12:24:13 <Wolf01> Because you insist on getting the cost from weird values
12:25:33 <Samu> on the right, the train is stopped (one of the newgrfs halves the running cost of stopped vehicles)
12:25:35 <Wolf01> Right values are: purchase price, value, refit (one cargo type might cost more than another because it ruins faster the wagon), age
12:27:32 <Samu> that's the wagon that doesn't specify a running cost
12:27:36 <Wolf01> Also try your change with 8k trains, let's see how good it performs with calculating ~8k wagons
12:27:44 <Samu> yeah, i'm wondering how i'm going to fix this
12:28:02 <Wolf01> But you don't want to cache it
12:29:18 <Samu> it's hard because a stopped "vehicle" with reduced costs is actually a property on the engine
12:29:41 <Samu> nars wagons don't have reduced costs
12:29:41 <Wolf01> It's hard because you chose the hard and weird path to do it in a wrong way
12:30:38 <Samu> my simulation of halved price is taking effect, but the results i'm seeing are not what I was looking for
12:33:20 <Samu> i believe the flaw is that I'm summing the running costs of all parts regardless if they're wagons or not. I suppose I have to exclude running costs of wagons from the formula, only count it from engines
12:36:23 <Wolf01> I already show you a possible right way to do it, I wont help you further on your nonsense as you are completely discarding my suggestions
12:37:28 <Samu> yeah, I'm a bit alone on this
12:43:56 <andythenorth> why do nml + nfo docs refer to temp registers as ‘storage’ :P
12:44:12 <Wolf01> My friends voted for Texticulator
12:44:19 <Wolf01> I should never ask friends
12:44:31 <andythenorth> that is definitely wrong sounding in English
12:45:12 <andythenorth> ‘industry.perm_register_nums.var_ratio_cargo_1’ would be neater as ‘industry.storage_nums.var_ratio_cargo_1'
12:45:24 <andythenorth> but I have to piss around distinguishing temp and perm storage
12:48:56 <andythenorth> industries have 16 registers that persist in savegames
12:49:18 <andythenorth> and varaction2 chains have registers that are transient, and exist whilst the chain is executed
12:50:35 <Samu> looks like it's working as intended after all
12:51:20 <Samu> only a tiny fraction of the train doesn't have a running cost, and it is basing it on a big fraction
12:52:19 <Samu> and i already know what you told me, you disagree with it
12:56:25 *** Alberth has joined #openttd
12:56:25 *** ChanServ sets mode: +o Alberth
12:57:01 *** JacobD88 has joined #openttd
13:00:58 <Samu> never higher than the sum of all the other parts
13:03:05 <Samu> i can see now why a user-defined parameter could be useful
13:03:49 <Samu> to adjust costs that "make no sense"
13:14:58 <andythenorth> hardly news, but I felt the need to share :P
13:15:21 <andythenorth> “ain’t finished yet neither"
13:17:27 <Alberth> looks much nicer than the dictionary access stuff, andy
13:18:38 <andythenorth> it’s over-engineered probably though :P
13:19:02 <Alberth> oh, clean code to work in also counts :)
13:51:58 <andythenorth> such compile times :P
13:52:14 *** supermop has joined #openttd
13:52:19 <andythenorth> FIRS was 50s or so, then I added Steeltown
13:52:25 <andythenorth> and some extra switches too
13:52:29 <andythenorth> now it’s 1m15s or so
14:15:03 <Alberth> add another economy, and you can drink tea while waiting :)
14:16:19 <andythenorth> ach, I should use the single industry compile
14:48:29 *** frosch123 has joined #openttd
14:55:42 <crem> Are you a german speaker by any chance?
14:56:32 <Alberth> and translate them to english
15:15:47 <Samu> STR_CONFIG_SETTING_RUNNING_COSTS_TRAIN_EXTRA_HELPTEXT :When enabled, extra running costs are added for parts of a consist in a train that do not specify a running cost, such as wagons from the original game.
15:16:03 <Samu> is this good english, bad english, how would you fix it
15:17:35 <Alberth> why do people insist on trying to fix original game data?
15:18:09 <Samu> because they like the original game
15:18:36 <Alberth> obviously you don't, as you're modifying it
15:20:01 *** HerzogDeXtEr1 has joined #openttd
15:21:11 <Alberth> but english seems good enough to me
15:21:27 *** innocenat has joined #openttd
15:21:45 <Alberth> somewhat pondering on the "a consist in", which seems a bit long and not adding much, but fair enough
15:22:34 <Alberth> but really, make a newgrf, using the original vehicles, and overriding the wagon costs
15:22:49 <Alberth> that instantly works everywhere
15:23:44 <Samu> i'm not sure it would achieve the same goal
15:25:10 <Samu> i don't know ... maybe it can
15:26:15 <Samu> the extra cost is based on the cost of other parts which do have a cost, dunno if the newgrf allows me to do this
15:27:11 <Samu> it's not a fixed value that I place on a table
15:29:46 <frosch123> do we have a static hashtable implementation in ottd?
15:31:58 <Eddi|zuHause> something hash-y was with vehicle collision detection
15:39:41 <Samu> i'm happy that i made it this far
15:39:53 <Samu> 4 years ago was when I had the idea
15:40:48 <Samu> now i just need a user-defined variable for better customization
15:46:20 *** Wormnest has joined #openttd
15:56:02 *** sla_ro|master has joined #openttd
16:05:29 *** sim-al2 is now known as Guest179
16:05:30 *** sim-al2 has joined #openttd
16:27:54 *** maciozo has joined #openttd
17:10:49 *** gelignite has joined #openttd
17:17:41 <supermop_> and some screenshots maybe
17:18:12 <supermop_> ill put some up/ make a release thread today after I do my taxes
17:43:36 <supermop_> Wolf01: ive been think a lot lately about tram overlays
17:44:03 <supermop_> abiut the various types of tramway people might want to see, without using up all 15 slots
17:46:08 <supermop_> basically for 'tramway' (that is light rail in a roadway), there is either the kind where the asphalt or stone blocks etc are build up over the trackbed, so you just see the rails set into the road surface. this seems to be what most people think of
17:47:34 <supermop_> there is also the kind where the track are set into a concrete slab, and that slab is the road surface between the rails, but it is asphalt outside of the rails, which seems to be common on most newly built or refurbished lines
17:48:16 <Eddi|zuHause> i suppose taking out the slab is easier in case of track maintenance
17:48:39 <supermop_> making the concrete part of the overlay then means that you must have the slab even when the light rail is not in a road
17:49:14 <supermop_> which some lines seem to have but not all
17:50:14 <Eddi|zuHause> also i don't know about "newly built"... these concrete slabs definitely have been around in the 80s
17:50:44 <supermop_> Eddi|zuHause true, in melbourn about half of the track that is unrestored since the 80s also looks like that
17:50:50 <supermop_> but nits not universal
17:51:20 <Samu> looking for english expert
17:51:24 <Eddi|zuHause> i know lots of brand new lines that have been redone with asphalt, not a slab
17:51:54 <supermop_> also pre-1960s in the us I never seen a photo of that concrete slab, but the newer light rails of the 90s and 00s seem to all have it here
17:52:04 <Samu> STR_CONFIG_SETTING_RUNNING_COSTS_TRAIN_EXTRA_DIVISOR_HELPTEXT :When the setting 'extra running costs for trains' is enabled, this divisor allows for better fine-tunning the desired running cost result. A lower divisor results in a higher cost. A higher divisor results in a lower cost. When set to Auto, the divisor will be based on the current game value set for 'maximum length of trains' instead.
17:53:14 <Eddi|zuHause> anyway, the concrete slab problem can only be solved if you have different overlays depending on whether there is a road or not
17:54:11 <supermop_> some less technically literate English speakers may be less familiar with the term 'divisor' but you aren't going to be able to explain such a technical concept to them in one string anyway
17:54:23 <supermop_> Eddi|zuHause yeah that's what I am thinking
17:54:53 <supermop_> also there are maybe several different user expectations for a light railway inside a town, without road
17:55:26 <supermop_> does it look like a light railway with ballast and ties, and maybe future fences when nrt supports them?
17:55:57 <supermop_> is it a tramway set in a bare concrete slab? is it a tramway set into a pedestrian mall?
17:56:10 <supermop_> is it a tramway set into grass?
17:56:42 <supermop_> all but one of those need the overlay to be just rails
17:57:05 <Eddi|zuHause> ... off-road trams also come in variants with wood sleepers, concrete sleepers sleeperless concrete or embedded in dirt or grass
17:57:45 <Eddi|zuHause> and yes, pedestrian zones come in all shapes and colours
17:58:23 <supermop_> of course I can just pick whatever i want to draw and let other authors create newgrfs with their own preference
17:59:21 <supermop_> also 'pedestrian mall' could be a road type
17:59:51 <supermop_> so that type of tramway is created by superposition of pedestrian walkway and light rail
18:00:55 <Eddi|zuHause> pedestrian zone can only be travelled by rollerskate and segway vehicles?
18:01:16 <Eddi|zuHause> the "pizzabote" definitely needs to go there
18:01:28 <supermop_> those golf cart sized street sweepers too
18:01:46 <Samu> Extra running costs for trains' divisor
18:01:49 <Wolf01> To me the problem is when you want to make a roadtype without catenary and with catenary, you occupy 2 slots
18:01:50 <Eddi|zuHause> ("pizzabote" is some old eye-candy vehicle grf)
18:02:07 <supermop_> Wolf01yeah it's a pain
18:02:57 <Eddi|zuHause> Wolf01: uhm, sure, but whether you add a flag "with catenary" or you just extend the slots by 1 bit doesn't really matter
18:02:58 <supermop_> to add a under-road conduit power takes a third type
18:02:58 <Wolf01> Also it makes really confusing when you place a non electric tramway over a trolleybus road
18:03:37 <Samu> "Extra running costs for trains' divisor" or "Divisor for extra running costs for trains" ugh... my english
18:03:40 <Eddi|zuHause> Wolf01: why is that confusing?
18:03:47 <supermop_> noticed that yesterday junction of tramway and elrd shouldn't draw the grand union catenary
18:03:49 <Wolf01> With the flag Eddi is talking about I tried to add catenary as infrastructure, so it could be used for both roadtypes at the same time
18:04:38 <supermop_> Wolf01 to be fair trams cannot use trolleybus wires and vis versa
18:04:43 <Samu> STR_CONFIG_SETTING_RUNNING_COSTS_TRAIN_EXTRA_DIVISOR :Extra running costs for trains' divisor: {STRING2}
18:04:47 <supermop_> one in 1 conductor, other is 2
18:05:27 <Wolf01> Actually, you can't run electric tram in ELRD+RAIL
18:05:44 <supermop_> Wolf01yes that is correct to real life though
18:06:05 <Wolf01> And the same happen for ROAD+ELRL for trolleybus
18:06:20 <Wolf01> Simply the game doesn't support it
18:06:36 <supermop_> trolleybus cannot use single wire catenary
18:06:51 <supermop_> because cannot use rails for DC return
18:07:10 <Wolf01> No, I'm not talking about realism, road vehicle can't use tram catenary
18:07:45 <supermop_> that's kind of why I made unspooled, so bus and tram wires look different
18:07:46 <Wolf01> But you can have ELRD+ELRL
18:08:00 <Eddi|zuHause> Wolf01: that's a problem that doesn't need solving. everything is fine
18:08:00 <Wolf01> With ELRD taking precedence
18:08:03 <supermop_> that exists on some streets in seattle
18:08:21 <supermop_> it creates quite a visual mess
18:09:31 <Wolf01> Eddi, you can't tell without infotool if your electric tram can run in that tile
18:09:43 <Wolf01> Because it might be ELRD+RAIL
18:09:55 <supermop_> that's why I made visually distinct sprites
18:10:13 <supermop_> ELRD wire in unspooled has two wires
18:10:26 <Wolf01> ELRD+ELRL use ELRD catenary
18:10:36 <Wolf01> So you need to change tracks
18:10:37 <supermop_> ideally it should draw both
18:10:43 <Eddi|zuHause> supermop_: but even with different sprites you can't distinguish ELRD+RAIL and ELRD+ELRL
18:11:00 <Eddi|zuHause> supermop_: drawing both causes too many glitches/corner cases
18:11:07 <supermop_> Eddi|zuHause I was hoping game would draw both
18:11:55 <Eddi|zuHause> supermop_: besides the wires, you would draw two sets of poles
18:12:21 <supermop_> at least in my sprites the poles overlap
18:15:38 <supermop_> i'd rather have to remember or use ? tool than have electric trams running on bus wire tho
18:18:42 <Wolf01> It's not even possible to make eltrams to run on bus wire, so the question is closed, the open question is "wtf my eltram does not run there?"
18:20:11 <supermop_> other than drawing both wires, is there any solution?
18:22:16 <Eddi|zuHause> man, for months now i've been meaning to make a backup and update my system, but i'm never actually doing it...
18:25:10 *** Montana has joined #openttd
18:25:50 <Alberth> eddi: tonight seems like a good evening for it
18:41:29 <Samu> describing functions takes so much of my time t.t
18:41:31 <Samu> * @param single_part whether to return the cost of the current part or the whole
18:48:08 *** andythenorth has joined #openttd
18:49:08 <andythenorth> so an nml rebuild? o_O
18:49:28 <Wolf01> Andy, do you have any suggestion about last hour log?
18:53:53 <andythenorth> an overlay for the map showing valid routes
18:54:07 <andythenorth> a transparency mode that palette shifts all tiles of a specific route type
18:54:26 <andythenorth> an additional ‘high visibility’ sprite in the newgrf spec that can be toggled on and off
18:54:40 <andythenorth> I want that for industry cargo acceptance and production also
18:54:55 <andythenorth> toggleable info sprites
18:55:06 <andythenorth> like a metadata layer
18:55:29 <andythenorth> TTRS does something like that with house acceptance I think
18:55:52 <Wolf01> I just want to show stations catchement areas for production and acceptance instead :(
18:56:29 <Wolf01> And fix station walking catchement areas, just to create havok
18:58:04 <andythenorth> bus != tram, so yes, the powered-or-not is moot
18:58:12 <andythenorth> it’s just a visual question about catenary sprites
19:00:29 <Wolf01> ELRD+ELRL is weird, we could implement that you can't have both, so you can at least recognize it by poles... but what about crossings? If it's possible ELRL(tram)+ELRL(train) crossing it should be possible also for ELRD+ELRL
19:01:19 <andythenorth> then it’s obvious
19:01:37 <Wolf01> Paint something like a reserved lane?
19:03:02 <Wolf01> Which is not really reserved...
19:03:19 <Wolf01> TL;DR color-coded roads
19:03:51 <Wolf01> Must go, my people needs me
19:16:16 *** ZirconiumX has joined #openttd
19:21:31 <Alberth> otherwise lines 80-98 would be missing :p
19:23:20 *** santzee has joined #openttd
19:23:57 <andythenorth> I was hoping I could make a dict of incompatible grfs and template them trivially
19:24:06 <andythenorth> but eh, there’s magic, so no
19:24:17 <Alberth> apparently checks if eg 'CaCa' grf will become active, and check for some parameter value
19:24:38 <santzee> can anyone tell me how to allow udp and tcp packets
19:24:58 <Alberth> you'd have to check the docs of that grf to see what that parameter does
19:25:11 <Alberth> likely it messes with something industry-ish
19:25:16 <andythenorth> I wonder why not just ban those grfs :P
19:25:29 <andythenorth> planetmaker might know?
19:25:55 <Alberth> perhaps they are harmless if that parameter is not set in the indicated way
19:26:10 <andythenorth> (related) is it a makefile kind of day?
19:26:24 <Alberth> and some fans like to use that grf with firs
19:26:35 <Alberth> oh, it could be a makefile day
19:26:48 <Alberth> or rather, evening :)
19:26:51 <frosch123> what was again the command to make python3 determinsitic?
19:27:10 <Alberth> python3 --help doesn't say?
19:28:10 <Alberth> yeah, after typing the reply, I remembered it was a env var :)
19:28:49 <frosch123> the result of compile firs is indeterminstic
19:28:55 <frosch123> it seems to reorder translations or something
19:29:03 <andythenorth> Alberth was your idea to make a new generic makefile for devzone projects? o_O or just my projects? o_O
19:29:03 <frosch123> it thought we fixed that already
19:29:06 <Alberth> santzee: we can give you the port numbers, but how to configure your modem and firewall, no idea
19:29:36 <santzee> yes i know the portnumber 3979?
19:29:45 <DorpsGek> frosch123: OpenTTD uses TCP and UDP port 3979 for server <-> client communication, UDP port 3978 for masterserver (advertise) communication (outbound), and TCP port 3978 for content service, a.k.a. BaNaNaS (outbound)
19:29:46 <Alberth> it follows master language
19:30:15 <Alberth> so all translations use the same order of strings
19:32:48 <andythenorth> which lang is that? o_O
19:33:04 <frosch123> i just picked one example
19:33:35 <frosch123> i also invoke nmlc directly, so it's not related to your python magic
19:33:41 <Alberth> I think they got sorted
19:34:20 <frosch123> andythenorth: btw: "nmlc info: DCxx strings: 233/2048" <- firs is again completely unfinished
19:34:21 <Alberth> oh, nml compiler rather than eints
19:34:55 <andythenorth> now I’ll have to keep going :P
19:35:03 <Alberth> andy, your makefile would be a good start I think
19:35:20 <andythenorth> I would suggest the Road Hog or Iron Horse one first
19:35:22 <frosch123> andythenorth: i think the idea of a "generic makefile" is silly
19:35:22 <Alberth> universal is so tricky due to all the weird stuff people do :p
19:35:33 <andythenorth> the FIRS makefile has baggage
19:35:45 <frosch123> if you want to make it work with everything, you make it that complicated that it works nowhere :p
19:35:46 <andythenorth> otoh, the FIRS one has an extra target for html_docs
19:36:08 <andythenorth> frosch123: this is why I never tried to make the python stuff reusable by other people :P
19:36:11 <Alberth> frosch123: nah, it works for exactly your cases :p
19:36:18 <andythenorth> in principle I’ve made an object framework for grfs
19:36:28 <frosch123> i got used to Makefiles being broken on most devzone projects, i always run hg purge before compilation
19:37:09 <andythenorth> hmm did I branch Road Hog for NRT?
19:37:11 <Alberth> right, some hogs or horse thus
19:37:50 <Alberth> likely it's simpler than generating c++ from Python :p
19:38:31 <andythenorth> whether to reduce the current Makefile, or start afresh?
19:39:03 <andythenorth> I only use [no target], ’clean’, ‘install’, and ‘html_docs’ (if it exists)
19:39:10 <Alberth> first update, and try to build the horses :)
19:40:19 <andythenorth> ‘roster=pony’ will make it faster
19:41:10 <Alberth> clearly, "make distclean; make" doesn't work :p
19:41:40 <Alberth> target wasn't used much recently :)
19:42:33 <andythenorth> works for me o_O
19:43:01 <Alberth> iron horse has no DCxx strings at all, seems finished thus :p
19:43:30 <Alberth> 1542:5dda61867b1b <-- that revision?
19:43:52 <Alberth> not that it matters much with makefiles
19:44:44 <andythenorth> not happy if do ‘make clean’ first though
19:45:09 <Alberth> what targets does it need to support, eg from compile farm?
19:45:33 <Alberth> or just use default gnu targets?
19:45:45 <DorpsGek> Commit by translators :: r27765 trunk/src/lang/russian.txt (2017-03-04 19:45:36 +0100 )
19:45:45 <Alberth> iirc that's was you talked about last time
19:45:47 <DorpsGek> russian: 4 changes by Lone_Wolf
19:45:48 <andythenorth> I would push a minimal set and see what breaks
19:45:50 *** FLHerne has joined #openttd
19:45:53 <andythenorth> jenkins will tell us / me
19:47:33 <andythenorth> seems that Makefile.config and Makefile.in could be folded together?
19:49:21 <Alberth> I had just decided to remove Makefile.config :)
19:49:39 <Alberth> I haven't opened Makefile.in yet
19:51:14 <Alberth> Interesting filenames do you use: 'SW9 .psd' a space before the "."
20:11:24 <Alberth> do you have projects that use CPP ?
20:13:35 <andythenorth> IH, RH, Sam don’t
20:14:06 <supermop_> fyi Andy, I have to keep deleting newer trunk hog to use nrt hog
20:14:33 <supermop_> maybe give it a different ID or something?
20:15:08 <andythenorth> that could work, but is liable to mistakes when I release it
20:15:24 <andythenorth> probably will ship it with wrong ID :P
20:16:20 <supermop_> I want Xs between ELRD and ELRL to use a separate X catenary instead of union
20:21:27 <Alberth> pretty quick, for one :)
20:22:51 <Alberth> wasn't there some script to derive repo revision, branch, modified flag, etc?
20:23:27 <Alberth> don't think that's the script :p
20:23:51 <Alberth> spiders have invaded the cities!
20:24:06 <andythenorth> Alberth: some of it goes in custom_tags.txt
20:24:10 <andythenorth> directly from Makefile iirc
20:24:39 <Alberth> I know, but there is a load of shell crap in the makefile to decide these things
20:24:47 <Alberth> I'd like to move that out of the makefile
20:24:49 <supermop_> if there are no ELRD bits to east and west of junction, and no ELRL bits to north and south,
20:25:23 <supermop_> it would be nice for game to either use a special X sprite, or to just overlay the ELRL \ and the ELRD /
20:26:31 *** Montana has joined #openttd
20:28:04 <Alberth> you change the makefile to set a roster?
20:28:29 <Alberth> or do you use a parameter, like make ROSTER=british
20:28:41 <supermop_> andy, any thoughts or sprites, speeds, or costs?
20:29:40 <frosch123> Alberth: other devzone projects moved to using the last-modified-date
20:29:48 <frosch123> instead of local hg revision
20:32:26 <andythenorth> Alberth: roster is a parameter / option
20:32:31 <andythenorth> by default it builds all
20:32:45 <andythenorth> see Makefile.in and src/utils.py
20:33:12 <Alberth> yes, but how do you set it?
20:34:04 <Samu> hopefully my lines of code are fine with you
20:34:23 <andythenorth> make roster=pony
20:41:12 *** supermop__ has joined #openttd
20:45:16 <Samu> Not downloaded yet - *insert sad face*
20:46:07 <Samu> i'm excited that I finished it! But sad that no one likes it, heh...
20:52:02 <andythenorth> “Some will, some won’t, so what, next” :)
20:59:05 <Samu> meanwhile, I found a display bug for engine value
20:59:32 <Samu> if the engine is multiheaded, the value of the second engine is £0
20:59:44 <Samu> the first engine carries the entire value
21:00:25 <Samu> bug also present in 1.6.1
21:10:55 <supermop_> using surface pen to draw sleepers
21:35:56 *** Montana has joined #openttd
21:37:26 <Wolf01> supermop_, draw transparent wires?
21:38:48 <Wolf01> Palette2Transparent just for wire part, always
21:40:13 <supermop_> is that the station roof thing?
21:40:42 <supermop_> currently nrt only allows a front and back part
21:40:50 <supermop_> not a separate wire part
21:40:54 <Wolf01> Sure it would help with transparent
21:41:19 <supermop_> for rail, at least in stations, there is separation between pylons and wire
21:41:50 <supermop_> which would let one set wires to transparent while keeping poles solid
21:42:32 <supermop_> what's your thinking on nerfing dirt speed now?
21:42:51 <supermop_> or do you want to patch nrt to allow traction coefficients
21:43:35 <Wolf01> Eh, everybody should agree, it's not just my decision
21:43:44 <supermop_> new vehicle smoke effect of dust clouds for RVs travelling faster than some given speed on dirt
21:46:19 <andythenorth> I am -1 to traction coefficients
21:46:49 <andythenorth> my only rationale is ‘overkill’
21:49:47 <supermop_> andythenorth: my only rationale in favor is 'rally cars'
21:50:19 <andythenorth> I had this idea very very long time ago
21:50:26 <andythenorth> long enough ago to let go of it :)
21:50:50 <Wolf01> Change coefficient with season
21:51:01 <Wolf01> Sticky roads in summer on tropic
21:51:41 <supermop_> brb need to grab late lunch and a drywall saw
21:52:38 <Wolf01> Do you need some sandpaper towels too?
21:53:09 <supermop_> plenty of sandpaper here actually
21:53:33 <supermop_> I have the tools of a 70 year old suburban man in this tiny apartment
21:53:56 <supermop_> I am actually surprised to find I am missing a drywall saw tbh
21:54:43 <Wolf01> And a gimlet, do you have a gimlet?
22:13:10 *** goodger has joined #openttd
22:22:07 <supermop_> Wolf01: no gin in the house at the moment
22:22:56 <supermop_> TE multiplier could be interesting for some things
22:23:10 <supermop_> cable hauled vs adhesion tramways?
22:23:49 <supermop_> I guess cable trams could just get huge HP and the track have huge maintenance
22:25:36 *** Supercheese has joined #openttd
22:28:12 <andythenorth> TE coefficient: 1
22:29:33 <supermop_> hmm the cc stripes on my poles are still just blue
22:29:33 <Eddi|zuHause> can it be higher than 1?
22:30:07 <andythenorth> does NRT support company colour?
22:30:10 <Eddi|zuHause> cc is not available for every sprite
22:30:32 <Eddi|zuHause> maybe you should open a feature request
22:30:36 <supermop_> I assumed it would because railtypes use it for fences
22:30:49 <Eddi|zuHause> fences are different to poles
22:30:50 <supermop_> but I also may have forgot to set a flag
22:31:13 <supermop_> Eddi|zuHause: what is a fence but a bunch of short poles?
22:39:24 <Eddi|zuHause> supermop_: some sprites are created more equal than others
22:39:54 <Eddi|zuHause> supermop_: the game is totally spritist
22:40:15 <supermop_> wood sleepers only visible on grey ballast, and concrete sleepers only show up on brown dirt
22:42:48 *** Progman has joined #openttd
22:58:06 <frosch123> andythenorth: no cc currently
22:59:23 <frosch123> we can enable it, if we want to
22:59:52 <frosch123> but we haves mixed road owners
23:00:04 <frosch123> so it would only really work for the underlay
23:00:37 <frosch123> (road depot has cc ofc)
23:01:24 <Wolf01> I would focus on making the base stuff work well first, then we should discuss on flag features
23:01:30 <andythenorth> I don’t see much benefit to cc
23:01:41 <andythenorth> other than not getting asked about it again :P
23:06:15 *** Montana has joined #openttd
23:10:50 *** Progman_ has joined #openttd
23:15:16 *** Progman_ is now known as Progman
23:30:42 <Wolf01> Also totally unrealistic (between ingame prices) and with a low impact on income...
23:31:13 <Samu> you can set divisor to 64 for ultra cheap wagons
23:31:51 <Samu> let me check what it becomes
23:32:06 <Wolf01> Even more useless, just disable it
23:32:43 <Wolf01> I would raise purchase costs for trains and wagons by factor 10
23:34:10 <Samu> or you can disable it alltogether
23:34:47 <Wolf01> Still can't understand where £1722 comes from
23:35:05 <Wolf01> Also, is it specified in purchase list?
23:35:30 <Samu> final_cost = cost_at_this_point + cost_at_this_point * length_of_parts_without_cost / (2 * divisor);
23:36:46 <Samu> purchase window cannot guess where you're attaching it to, can't generate a cost there
23:37:07 <Samu> because "bad feature" yada yada
23:37:16 <Wolf01> Still can't understand why a wagon running cost must depend to what is attached to
23:37:33 <frosch123> Wolf01: openttd is a game with exponentially growing income
23:37:43 <frosch123> the more you build the more money you get
23:38:05 <frosch123> making stuff more expensive makes the start slower (= boring), while changing nothing in the long run
23:38:17 <Wolf01> Then let's make incremental purchase price for things, more you purchase more you pay ;)
23:38:48 <frosch123> if you look at other games, you can see the same thing
23:39:17 <frosch123> there are different types of resources, some you get exponentially and become pointless, while the game/tec progression is usually tied to linear growing things
23:39:42 <frosch123> example starcraft: the number of workers mostly affects mineral income, but hardly gas income
23:39:53 <Wolf01> There's one thing, only one, which you can introduce to make exponential money growth: taxes
23:40:22 <Samu> @calc 3445 + 3445 * 6.5 / (2 * 1)
23:40:33 <frosch123> example eu 4: when time progresses you make exponentially much money, but most stuff is affected by monarch points, which you can only buy in very limited amounts
23:41:33 <frosch123> the problem with ottd is that it is so old-fashoned, that it only has a single resource
23:42:21 <Samu> @calc 3445 + 3445 * 4.5 / (2 * 1)
23:42:22 <frosch123> Wolf01: how about adding "inefficient administration"
23:42:35 <frosch123> when your company grows, all actions become more inefficient
23:42:44 <Samu> this calc dude sucks or i fail with this calc
23:43:06 <Wolf01> The problem with ottd is that you control every aspect of transport, from infrastructure to vehicles and even fund industries to produce the right cargo where is more comfortable to your network
23:43:34 <Samu> @calc 3445 + 3445 * 4.5 / (8 * 2 * 1)
23:43:51 <Wolf01> Samu, learn to use the parenthesis
23:44:28 <Samu> @calc 3445 + (3445 * 4.5) / (8 * 2 * 1)
23:44:35 <Wolf01> Also "* 1"... you can leave this out as it can't affect the result
23:45:10 <Samu> it's funny that I can't fool proof my own formula now
23:46:12 <Samu> oh right, those unmentioned values t.t
23:47:08 <Samu> divisor = VEHICLE_LENGTH * 2 * _settings_game.vehicle.train_extra_runcost_divisor;
23:48:51 *** Supercheese has joined #openttd
23:52:05 <Samu> @calc 3445 * 0.5 / (8 * 2 * 1)
23:52:07 <Wolf01> Btw frosch123, you won't solve the problem of money with running costs based on train length, as trains won't extend with time, it becomes just another fixed cost which could be easily calculated from wagon purchase price * factor
23:52:57 <Samu> @calc 3445 * (8 * 2 * 0.5) / (8 * 2 * 1)
23:53:17 <Wolf01> And in this way, one doesn't need blackmagic formulae
23:54:25 <Samu> @calc 3445 * (8 * 2 * 0.5) / (8 * 2 * 64)
23:54:51 <Samu> yeah, the £26/yr per wagon i mentioned earlier
23:56:56 <Samu> I gave up trying to balance trains by the running cost
23:57:07 <Samu> I only wanted to get this feature done
23:58:20 <frosch123> why would i want to make running cost based on train length
23:58:36 <frosch123> though i think some r-based newgrf add running cost for food vans and stuff
23:59:04 <frosch123> both refridgerated vans and dinner vans
23:59:19 <Samu> r-based? what is r-based?
continue to next day ⏵