Skip to content

Instantly share code, notes, and snippets.

View ennorehling's full-sized avatar

Enno Rehling ennorehling

View GitHub Profile
/**
* `n` persons with skill `sn` are merged into `add` persons with skill `sv`
*/
int merge_skill(const skill* sv, const skill* sn, skill* result, int n, int add)
{
int total = add + n;
/* number of person-weeks the units have already studied: */
int days, weeks = weeks_from_level(sn ? sn->level : 0) * n
+ weeks_from_level(sv ? sv->level : 0) * add;
function test_leave_harbour()
local f = faction.create('human')
local r1 = region.create(1, 0, 'ocean')
local r2 = region.create(-1, 0, 'ocean')
local r = region.create(0, 0, 'glacier')
local b = building.create(r, 'harbour', 25)
local sh = ship.create(r1, 'longboat')
local u = unit.create(f, r1, 1)
local u2 = unit.create(f, r, 1)
u2.building = b
#include "util/pofile.h"
#include "util/strings.h"
#include <stb_ds.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct keyval_t {
@ennorehling
ennorehling / defaults.md
Created July 20, 2022 06:02
Vorausbefehle

Ich habe natuerlich immer noch Fragen und Sonderfaelle Enno —

Mal ganz vorne anfangen.

Wenn in meiner Vorlage steht:

ARBEITE
// TODO: Kekse

und ich befehle diese Woche:

Beispiel: Ich befehle meiner Einheit:

EINHEIT demo
UNTERHALTE
@GIB xol 200 Silber
GIB phy 100 Silber

die Befehle wereden ausgeführt, und in der Zugvorlage steht:

EINHEIT demo
@ennorehling
ennorehling / encodings-erklaert.txt
Created April 1, 2022 17:48
Geschichte: Wie es zu dem Durcheinander mit den Encodings kam
Das mit den Kodierungen ist so:
Als die Welt nur 127 Zeichen hatte, war noch alles einfach. Wir haben in jedes Byte ein Zeichen kodiert, und die Zuordnung von numerischem Wert zu Zeichen wurde standardisiert: ASCII. Das A hat den Wert 65 bekommen, das B die 66, usw. Kleinbuchstaben fangen bei 97 an, Zahlen bei 48.
Irgendwann haben dann irgendwelche Europäer gemeint, es gäbe ja noch viel mehr Zeichen.
ANSI ist das, was den Europäern als Lösung eingefallen ist. Die haben einfach auf die 127 Zeichen nochmal 128 drauf gesetzt.
255 Zeichen sollten ja wohl genug sein.
Aber die Russen haben gemeint, sie seien vergessen worden, und haben auf die 127 Zeichen ihre eignen 128 drauf gesetzt. KOI8R hiess das.
Das heisst, wenn man eine 65 in seiner Datei hatte, wurde das jetzt bei Russen, Europäern und Amis als A angezeigt, aber wenn man eine 132 hat, ist das bei Amerikanern ungültig, bei (West-)Europäern ein ä, und bei Russen ... irgendwas kyrillisches.
Man musste also plötzlich wissen, welchem Standard die Datei folgt (E
@ennorehling
ennorehling / kriegsgruende.md
Created May 11, 2021 16:54
Wir erklären Euch den Krieg wegen ...
  1. Errichtung eines Hafens an einem Binnensee
  2. irgendeinem an den Haaren herbeigezogenen Grund
  3. akkutem Wahnsinn
  4. der Tradition
  5. Allgemeine Reudigkeit ist definitiv ein guter Kriegsgrund!
  6. Benutzung des Kriegsgrund-Generators
  7. des Parteinamens Die Gummibärchen
  8. Ruhm und Ehre
  9. Wir sind nur Gäste auf einer grossen Grill-Party.
  10. dem falschen Magie
local crs = require 'cr'
function log_error(str)
io.stderr:write(str)
end
local terrains = {
['Ozean'] = 'ocean',
['Gletscher'] = 'glacier',
['Eisberg'] = 'iceberg',
require "lunit"
module("tests.e2.trees", package.seeall, lunit.testcase )
function setup()
eressea.game.reset()
eressea.settings.set("rules.food.flags", "4") -- food is free
eressea.settings.set("NewbieImmunity", "0")
end
function test_trolls_ride_carts()
local r0 = region.create(0, 0, "plain")
local r1 = region.create(1, 0, "plain")
local r2 = region.create(2, 0, "plain")
local r3 = region.create(3, 0, "plain")
local r4 = region.create(4, 0, "plain")
local f = faction.create("troll")
-- 1. 20 trolls can pull 5 loaded carts:
local u1 = unit.create(f, r0, 20)
u1:add_item("cart", 5)