Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002878EresseaBEWACHEöffentlich2022-08-15 22:14
ReporterSolthar Bearbeitung durch 
PrioritätnormalSchweregradschwerer FehlerReproduzierbarnicht getestet
Status neuLösungoffen 
Produktversion27.3 
Zusammenfassung0002878: Newbie Parteien können bewachen, aber nicht angegriffen werden.
Beschreibung

Wenn eine Newbiepartei in Runde x, bevor die Immunität abläuft, anfängt zu bewachen, kann sie in der Folgewoche zwar beklaut, aber nicht angegriffen werden. Das ist natürlich ein Problem, denn sei verhindert da schon den Abbau.

Testreport Runde 1:

  • "Deine Partei ist nur noch in der kommenden Woche immun gegen Angriffe."
  • bewacht nicht

Runde 2:

  • "Deine Partei ist nun nicht mehr immun gegen Angriffe."
  • "Eine Partei muß mindestens 3 Wochen alt sein, bevor sie angegriffen oder bestohlen werden kann."
  • "bewacht"
  • "Einheit 6jeq (6jeq) in Difedlud (0,0) produziert 1 Holz."

Runde 3:

  • "Deine Partei ist nun nicht mehr immun gegen Angriffe."
  • "Eine Partei muß mindestens 3 Wochen alt sein, bevor sie angegriffen oder bestohlen werden kann."
  • "Einheit 6jeq (6jeq) in Difedlud (0,0) produziert 1 Holz."

Runde 4:

  • Attacke: "Eine Partei muß mindestens 3 Wochen alt sein, bevor sie angegriffen oder bestohlen werden kann."
  • "Einheit 438v (438v) verdient in Difedlud (0,0) 50 Silber durch Diebstahl."
  • "'MACHE Holz' - Die Region wird von Nichtalliierten bewacht."
Schritte zur Reproduktion
function test_newbie()
    local newbi = 3
    local newbiOld = eressea.settings.get("NewbieImmunity")
    eressea.settings.set("NewbieImmunity", newbi)

    local debug = true

    local r = region.create(0, 0, 'plain')
    local f = faction.create('human', "newb@eressea.de", "de")
    local f2 = faction.create('human', "aggro@eressea.de", "de")
    f.age = 0
    f2.age = 10
    local u1 = unit.create(f, r, 1)
    local u2 = unit.create(f2, r, 1)
    local u3 = unit.create(f2, r, 1)
    local u4 = unit.create(f2, r, 1)
    u1:add_item("sword", 1)
    u1:set_skill("melee", 1)
    u1:add_order("BEWACHE")
    u2:add_item("sword", 1)
    u1:add_item("money", 1000)
    u2:add_item("sword", u2.number)
    u2:set_skill("melee", 50)
    u3:set_skill("forestry", 1)
    u4:set_skill("stealth", 1)

    r:set_resource("tree", 100)
    for i = 1, newbi+1 do
        u1:add_order("BEWACHE")
        u1:set_skill("stamina", 50)
        u2:add_order("ATTACKIERE " .. itoa36(u1.id))
        u3:clear_orders()
        u3:add_order("MACHE Holz")
        u3:set_skill("forestry", 1)
        u3:add_item("log", -u3:get_item("log"))
        u4:clear_orders()
        u4:add_order("BEKLAUE " .. itoa36(u1.id))
        u1.hp = u1.number * u1.hp_max
        process_orders()
        if debug then
            print(i, newbi, "f.age ", f.age, "guard ", u1.guard, "hp", u1.hp, "log", u3:get_item("log"), "money", u1:get_item("money"))
            init_reports()
            write_reports()
        end
        if i < newbi-1 then
            assert_false(u1.guard, "newbie should not guard")
            assert_equal(520, u1.hp, "newbie should be immune")
            assert_equal(1, u3:get_item("log"), "region should not be guarded")
            assert_equal(1000, u1:get_item("money"), "newbie should be immune")
        elseif i == newbi - 1 then
            assert_true(u1.guard, "newbie should guard")
            assert_equal(520, u1.hp, "newbie should be immune")
            assert_equal(1000, u1:get_item("money"), "newbie should be immune")
            assert_equal(1, u3:get_item("log"), "region should not be guarded")
        else
            assert_true(u1.guard, "newbie should guard")
            assert_true(1000 > u1:get_item("money"), "newbie should *not* be immune")
            assert_true(520 > u1.hp, "guarding newbie should *not* be immune")
            assert_equal(0, u3:get_item("log"), "region should be guarded")
        end
    end

    eressea.settings.set("NewbieImmunity", newbiOld)
end
Zusätzliche Informationen

Nach kurzem Blick in den Code, verstehe ich nicht, warum das bei Attackiere und Beklaue verschieden reagiert. Ist der Lua-Test wirklich gültig?

Jedenfalls wäre es schön, wenn die Fehlermeldung auch mit ausgibt, wie lange die Partei noch immun ist.

Partei1wpy
SpielE2
Report0

Eintrags-Beziehungen

verwandt mit 0002847 erledigtEnno Newbie-Parteien werden angreifbar, können aber die eigene Region nicht bewachen 

Notizen / Dateien

Zu diesem Eintrag gibt es keine Notizen.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2022-08-15 22:13 Solthar Neuer Eintrag
2022-08-15 22:14 Solthar Beschreibung aktualisiert
2022-08-15 22:14 Solthar Schritte zur Reproduzierung aktualisiert
2022-08-15 22:14 Solthar Beziehung hinzugefügt verwandt mit 0002847