Commit Graph

19 Commits (a62b15ccd2288978adcf7b5ae7dd85fdd9cff386)

Author SHA1 Message Date
Alexander Gavrilov 63d256c1e9 Adjust siege engine targeting weights.
Stop shooting at leaving caravan guards for one.
2014-04-17 22:10:43 +04:00
Alexander Gavrilov c27c38e4c0 Remove tired or hungry siege operators from duty when at peace.
The threshold is set at the level when they start to blink - normally
they would continue on with the job until they get a thirsty/hungry
thought, but immediately run off to eat if they lose the job (thus
refusing to load the engine after firing it). The code checks for
active sieges and whether there is a free replacement unit.
2014-04-15 21:52:39 +04:00
Alexander Gavrilov fc9826389b Account for meandering movement when predicting unit path in siege engine.
The movement is random, but there is an average slowdown coefficient.
2014-04-15 19:50:23 +04:00
Alexander Gavrilov 55cea36c76 Use the new API to produce combat reports for aimed siege engine attacks.
This requires exposing the actual operator unit to lua code.
2014-04-15 19:50:23 +04:00
Quietust 837da8ae98 Fix siege-engine to compile on Windows - don't have C++11, and pow() is picky about arg types 2014-03-25 13:30:45 -05:00
Alexander Gavrilov 8963a49414 Forbid the items shot by siege engines if the forbid ammo order is set.
This only applies when targeting the engine, so you could still make
cheaty infinite ammo training units by using stock aiming mode.
2014-03-24 16:05:12 +04:00
Alexander Gavrilov 97ae857c38 Always shatter glass items within bins thrown by a catapult.
The glass materials have impact strength copied from compression
strength, so the items had 1/5 chance to survive without damage.
Since glass is infinite, it makes sense to make it single-use.
2014-03-07 17:42:49 +04:00
Alexander Gavrilov df22f25a69 Rewrite aiming error code to account for distance and engine quality.
Now the error is simulated by using an approximate normal distribution.
2014-03-07 17:35:04 +04:00
Alexander Gavrilov ef93f2ea4c Compute quality of siege engines and use it to extend firing range.
Since parts aren't there until it is built, it requires checking that.
2014-03-07 17:34:21 +04:00
Alexander Gavrilov 9827184ef7 Switch to the new random number generator class. 2014-03-07 17:34:21 +04:00
Alexander Gavrilov 983685de8d Squash uninitialized variable warnings. 2014-03-07 17:34:21 +04:00
Alexander Gavrilov 41bcd52c36 Make siege engine debug markings toggleable via lua.
Also check that the tile actually exists to avoid crashes.
2014-03-07 17:34:04 +04:00
Alexander Gavrilov d7e35c2d23 Add built-in enable and disable commands. 2013-09-30 13:19:51 +04:00
Alexander Gavrilov 3ff5d38a5c Add a few utility functions to the main library. 2012-10-30 12:40:26 +04:00
Quietust 27c7dfde4f ANY_FREE -> IN_PLAY, to match terminology used in DF's error messages 2012-10-23 12:14:21 -05:00
Alexander Gavrilov 459c69046b Dissolve the World module class into a namespace.
It made accessing persistent data way too cumbersome.
2012-10-06 13:46:20 +04:00
Alexander Gavrilov 164c61b638 Forbid stuff from bins in siege-engine, if forbid ammo standing order set. 2012-09-27 10:43:42 +04:00
Alexander Gavrilov a80f574be8 Only initialize siege engine in dwarf mode. 2012-09-19 19:52:57 +04:00
Alexander Gavrilov 82e870c8dd Move siege engine out of devel. 2012-09-17 14:59:59 +04:00