Commit Graph

10547 Commits (7c444e7f963a266a452625613e9cd326226d8587)
 

Author SHA1 Message Date
Lukas Werling 87ee44964c Send script-defined statistics to the masterserver
After GameOver(), the global function CollectStatistics() is called
which in turn calls CollectStats() on all definitions and the Scenario.
The results are collected into a proplist and sent to the masterserver
as JSON.

The intended purpose is to collect statistics like weapon kill counts
and evaluate them across all online games to improve balancing.
2017-02-17 23:29:16 +01:00
Lukas Werling ee0b1c2599 Implement JSON serialization for C4Value 2017-02-17 23:29:01 +01:00
Lukas Werling a44bd69b2f Fix find_path for GMock on Arch Linux
The path is /usr/src/gmock/gmock-all.cc there.
2017-02-17 20:21:47 +01:00
Nicolas Hake 5006a7409e Aul tests: Increment subtest counter per script execution
GTest usually only increments its part count per EXPECT_* call, which we
don't use in diagnostics tests, so all compilation failures would show
as part number 0.
2017-02-16 19:32:47 +01:00
Nicolas Hake 15f5eefc3f Diagnostics tests: Pull common code into a macro
Instead of declaring an error handler every time we run a subtest, we'll
just use a class member that we clear when we leave the scope of the
subtest.
The macro is a bit ugly but solves the issue with redeclaring the scope
guard.
2017-02-16 19:32:46 +01:00
Nicolas Hake c07e0768d6 Aul tests: Split DiagnosticsTest.Warnings into individual parts
We'll test every diagnostic we want to issue in a separate test case so
they get grouped more nicely.
2017-02-16 19:32:45 +01:00
Nicolas Hake c67d188d91 Aul tests: Check for warning ID instead of message 2017-02-16 19:32:44 +01:00
Nicolas Hake b4127439ac Tests: Move aul diagnostics test to a separate file 2017-02-16 19:32:43 +01:00
Nicolas Hake 78bbbc917b Fallback to sane settings when compiling scripts without ScriptHost
Compilation without an associated ScriptHost happens in a call to eval,
in which case we'll fall back to the default warning settings (because
we don't have a location which we could get settings from).

Fixes #1891.
2017-02-16 19:32:42 +01:00
Lukas Werling 181f7ab471 Prefer public/stable IPv6 source addresses
We don't benefit at all from privacy addresses as we're publishing all
local addresses in any case. By preferring stable addresses, we can
avoid reconnection issues after the preferred address changes.

This API is defined in RFC5014, but apparently only implemented in
Linux.
2017-02-14 21:44:05 +01:00
Sven Eberhardt da4f49d7ca Add AI attack mode (weapon) to editor properties 2017-02-14 01:36:12 -05:00
Maikel de Vries 60f3e206cc fix variable shadowing in some scripts 2017-02-13 19:04:27 +01:00
Nicolas Hake 1594acd3ed Aul: Warn if a function parameter shadows a local variable
Yeah. Aul looks up function parameters before local variables when
trying to resolve an identifier. Usually this doesn't matter, but you'll
notice it if you have a local variable and a parameter with the same
name, because the variable should be initialized to nil yet you get the
value of the parameter.
2017-02-13 17:20:03 +01:00
Nicolas Hake 1595bf56a5 Aul test: Write correct output for BoolLit 2017-02-13 15:24:17 +01:00
Nicolas Hake 2b5d34f420 Aul: Remove unnecessary virtual dtor from Script node
The dtor (which didn't even do anything) broke testing on g++ and clang,
because they correctly delete some ctors if the dtor is declared.
2017-02-13 15:23:51 +01:00
Nicolas Hake 30c5bb5f8d Aul: Allow the user to selectively enable/disable warnings
This commit introduces a new Aul directive "#warning", which can be used
to enable or disable warnings for a particular piece of code.

"#warning enable" enables all warnings.
"#warning disable" disables all warnings.
"#warning enable empty_parameter_in_call" selectively enables one
specific warning while not affecting any other.

All warnings that used to be controlled by Developer.ExtraWarnings
remain disabled by default.
2017-02-13 15:07:50 +01:00
Nicolas Hake 23bf3c4f0a Aul: Don't explicitly prepend "ERROR" to runtime errors
Since the error handler would itself prepend "ERROR", runtime errors
used to be written as "ERROR: ERROR: <whatever>".
2017-02-13 15:07:50 +01:00
Nicolas Hake a026bda561 Aul: Let error handler count warnings and prepend severity
Instead of explicitly writing to the log, let C4AulParse and
C4ScriptHost warnings go to the error handler to do with as it sees fit.
2017-02-13 15:07:50 +01:00
Nicolas Hake 5f520c6326 C4AulCompiler: Don't double-count compile time warnings 2017-02-13 15:07:50 +01:00
Sven Eberhardt 2b888fd136 Enlarge initial client connection dialogue to accommodate long ipv6 addresses 2017-02-12 11:48:55 -05:00
Maikel de Vries 60e0417dd2 defense enemy: refactor code for better overloading 2017-02-10 17:57:33 +01:00
Sven Eberhardt ef5626774d Add another default scenario template 2017-02-05 16:08:30 -05:00
Sven Eberhardt 22306bd266 Editor: Add templates for new scenarios 2017-02-05 16:08:29 -05:00
Sven Eberhardt 2f44b48e7d Fix German string table entry for map size in new scenario dialogue 2017-02-05 16:08:29 -05:00
Nicolas Hake 7284d65685 Remove unintentional semicolon after if()
Also changed some other instances of the if(); pattern to use an empty
block in order to suppress the new warning.
2017-02-05 14:22:09 +01:00
Nicolas Hake a33d98ee71 Aul: Warn on empty controlled statement
Aul will now emit a warning if you type something like
    if (...); return true;
(note the semicolon right after the condition). It will also warn on an
empty 'else' branch. If you actually intended to have a no-op there, use
an empty block '{}'.
2017-02-05 14:17:37 +01:00
Nicolas Hake 9a201441d5 Mat insertion: Fix broken conditional 2017-02-05 13:51:04 +01:00
Nicolas Hake 9bddba53df Improve CStdStream const correctness 2017-02-05 13:26:24 +01:00
Nicolas Hake b0898f4e1a C4Group: Pull most the data members out of the header 2017-02-05 13:26:23 +01:00
Nicolas Hake bcbd368ffd C4Group: Rename "Status" enum to "SourceType" 2017-02-05 13:20:18 +01:00
Nicolas Hake 71f8cb0699 C4Application: Remove unused flag IsInGameTick 2017-02-05 13:20:18 +01:00
David Dormagen 56fa6ca157 fish: fixed silent defect (usage of wrong variable)
This most likely does not change the behaviour, as VisionMaxRange was a higher value than VisionMaxAngle and probably capped during the fuzzyfication.
2017-02-04 15:07:41 +01:00
Maikel de Vries 2be444c297 defense goal: clean up wave control
Merge this into enemy control, which did handle most of the control stuff already.
2017-02-04 15:01:03 +01:00
Lukas Werling 487fcc362d Linux: Read IPv6 addresses from /proc/net/if_inet6
In contrast to getifaddrs(), /proc/net/if_inet6 allows filtering
deprecated privacy addresses. As these addresses generally won't be
useful for new connections, there's no reason to include them and they
only cause unnecessary connection attempts.
2017-02-02 22:23:12 +01:00
Maikel de Vries 27fa2410f4 defense: only provide infinite grenade launcher ammo if homebase is active 2017-02-02 21:47:57 +01:00
Maikel de Vries caca643c83 ai: add bomber and improve defense ai 2017-02-02 21:47:57 +01:00
Maikel de Vries 2807f36319 indicate which items are explosive 2017-02-02 21:47:57 +01:00
Maikel de Vries 0dbfa2dd91 ai: airship gets new pilot if old one is lost 2017-02-02 21:47:57 +01:00
Maikel de Vries 7b26e1fa13 ai: put a message when an intruder is spotted 2017-02-02 21:47:57 +01:00
Maikel de Vries ac38e1d23a ai: unify settings 2017-02-02 21:47:56 +01:00
Maikel de Vries b3ace26ae3 put ai movement into a separate script 2017-02-02 21:47:56 +01:00
Maikel de Vries b43ce3080a ai: prohibit movement if ai has command and climb down ladders correctly 2017-02-02 21:47:56 +01:00
Maikel de Vries a61743a4d5 improve movement of defense boom attack 2017-02-02 21:47:56 +01:00
Maikel de Vries c02a76119a ai: fix script runtime errors in target finding 2017-02-02 21:47:56 +01:00
Maikel de Vries d221289886 defense goal: fix awarding bonus after game has finished 2017-02-02 21:47:56 +01:00
Maikel de Vries 957d74bbae update king of the hill to new ai and small improvements 2017-02-02 21:47:56 +01:00
Maikel de Vries 21f82e6c41 update defense enemies to new ai 2017-02-02 21:47:56 +01:00
Maikel de Vries 7d3062277a ai: attack messages, logging and better target finding 2017-02-02 21:47:56 +01:00
Maikel de Vries 8159d73be6 ai: implement airship 2017-02-02 21:47:56 +01:00
Maikel de Vries 4d6be35c32 allow script players to join in network rounds (#1885) 2017-02-02 21:47:56 +01:00