NEP
Das NEP - Netsurfer Expansion Pack - ist eine Skripterweiterung von OldMacDonald und Netsurfer, die tief ins Spiel eingreift und dem Mapper ermöglich große Veränderungen am Spielablauf vorzunehmen. Wichtigstes Feature des NEP sind die änderbaren Aufstiegsbedingungen. Aber es bietet noch mehr schöne Sachen. Entlassen-Schalter für Battalione und Kriegsmaschinen, Rückbau von Gebäuden und Abrissverbot sind einige der vielen Möglichkeiten.

Installation

Das NEP ist sowohl im lokalen als auch im globalen Skript präsent. Zur Anzeige der Skriptdateien bitte nicht MS Internet Explorer Verwenden!

NEP für das globale Skript: Nep global
NEP für das lokale Skript: Nep lokal

Die Luas beinhalten den Briefingcode für die QSB 3.9 und älter. Es handelt sich um einen vollständigen Skriptrohling für die jeweilige Skriptumgebung. Du musst deinen eigenen Scriptcode nur noch hinzufügen.

Aufstiegsbedingungen

Die Aufstiegsbedingungen werden in der Funktion NEP_KnightTitles geändert. Diese Funktion ist sowohl im globalen Skript als auch im lokalen Skript vorhanden. Es ist darauf zu achten, dass der Inhalt der Funktionen identisch ist!

Die Aufstiegsbedingungen beginnen mit Mayor (Landvogt) und enden mit Archduke (Erzherzog).

Beispiele

KnightTitleRequirements[KnightTitles.Baron] = {}
KnightTitleRequirements[KnightTitles.Baron].Settlers = 30
KnightTitleRequirements[KnightTitles.Baron].Storehouse = 1
KnightTitleRequirements[KnightTitles.Baron].Headquarters = 1
KnightTitleRequirements[KnightTitles.Baron].Cathedrals = 1
KnightTitleRequirements[KnightTitles.Baron].Goods = {{"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Hygiene_Supplier, 12}}

Um Baron zu werden muss der Spieler 30 Siedler unterhalten. Burg, Kirche und Lagerhaus müssen mindestens das 1 Upgrade erhalten haben und zusätzlich muss der Spieler 12 Hygieneartikel herstellen.

KnightTitleRequirements[KnightTitles.Duke] = {}
KnightTitleRequirements[KnightTitles.Duke].Settlers = 150
KnightTitleRequirements[KnightTitles.Duke].Headquarters = 3
KnightTitleRequirements[KnightTitles.Duke].DecoratedBuildings = {Goods.G_Candle, 8}
KnightTitleRequirements[KnightTitles.Duke].Goods = {    {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Entertainment_Supplier, 30},
         {"AmountOfEntitiesInCategory", EntityCategories.Spouse, 40},
         {"AmountOfEntity", Entities.B_Baths, 2}}

Hier muss der Spieler für den Titel Herzog 150 Siedler unterhalten, die Burg maximal ausgebaut, 8 Gebäude mit Kerzen ausgestattet, 30 Unterhaltungsartikel produziert, 40 Ehen geschlossen und 2 Badehäuser gebaut haben.

function NEP_KnightTitles()

    KnightTitles = {}
    KnightTitles.Knight     = 0
    KnightTitles.Mayor      = 1
    KnightTitles.Baron      = 2
    KnightTitles.Earl       = 3
    KnightTitles.Marquees   = 4
    KnightTitles.Duke       = 5
    KnightTitles.Archduke   = 6

    NeedsAndRightsByKnightTitle = {}

    NeedsAndRightsByKnightTitle[KnightTitles.Knight] = {
        ActivateNeedForPlayer, {Needs.Nutrition,Needs.Medicine},
        ActivateRightForPlayer, {
         Technologies.R_Gathering,
         Technologies.R_Woodcutter,
         Technologies.R_StoneQuarry,
         Technologies.R_HuntersHut,
         Technologies.R_FishingHut,
         Technologies.R_CattleFarm,
         Technologies.R_GrainFarm,
         Technologies.R_SheepFarm,
         Technologies.R_Nutrition,
         Technologies.R_Bakery,
         Technologies.R_Dairy,
         Technologies.R_Butcher,
         Technologies.R_SmokeHouse,
         Technologies.R_Clothes,
         Technologies.R_Tanner,
         Technologies.R_Construction,
         Technologies.R_Trail,
         Technologies.R_KnockDown,
         Technologies.R_Sermon,
         Technologies.R_HerbGatherer,
         Technologies.R_Beekeeper,
         Technologies.R_IronMine,
        }
    }

    NeedsAndRightsByKnightTitle[KnightTitles.Mayor] = {
        ActivateNeedForPlayer, {Needs.Clothes,},
        ActivateRightForPlayer, {
         Technologies.R_Hygiene,
         Technologies.R_Soapmaker,
         Technologies.R_BroomMaker,
         Technologies.R_Taxes,
         Technologies.R_Military,
         Technologies.R_SwordSmith,
         Technologies.R_Barracks,
        },
        StartKnightsPromotionCelebration
    }

    NeedsAndRightsByKnightTitle[KnightTitles.Baron] = {
        ActivateNeedForPlayer, {Needs.Hygiene,Needs.Wealth},
        ActivateRightForPlayer, {
         Technologies.R_Entertainment,    
         Technologies.R_Tavern,
         Technologies.R_Pallisade,
         Technologies.R_Festival,
         Technologies.R_BatteringRam,
         Technologies.R_SiegeEngineWorkshop,
         Technologies.R_Weaver,
         Technologies.R_Carpenter,
         Technologies.R_Wealth,
        },
        StartKnightsPromotionCelebration
    }

    NeedsAndRightsByKnightTitle[KnightTitles.Earl] = {
        ActivateNeedForPlayer, {Needs.Entertainment,Needs.Prosperity},
        ActivateRightForPlayer, {
         Technologies.R_Thieves,
         Technologies.R_BarracksArchers,
         Technologies.R_BowMaker,
         Technologies.R_Street,
         Technologies.R_Medicine,
         Technologies.R_BannerMaker,
         Technologies.R_Prosperity,
        },
        StartKnightsPromotionCelebration
    }

    NeedsAndRightsByKnightTitle[KnightTitles.Marquees] = {
        ActivateNeedForPlayer, nil,
        ActivateRightForPlayer, {
         Technologies.R_Baths,
         Technologies.R_Wall,
         Technologies.R_Ballista,
         Technologies.R_SiegeTower,
         Technologies.R_AmmunitionCart,
         Technologies.R_CandleMaker,
        },
        StartKnightsPromotionCelebration
    }

    NeedsAndRightsByKnightTitle[KnightTitles.Duke] = {
        ActivateNeedForPlayer, nil,
        ActivateRightForPlayer, {
         Technologies.R_SpecialEdition,
         Technologies.R_SpecialEdition_Pavilion,
         Technologies.R_Blacksmith,
         Technologies.R_Catapult,
         Technologies.R_SpecialEdition_StatueFamily,
         Technologies.R_SpecialEdition_Column,
         Technologies.R_SpecialEdition_StatueSettler,
         Technologies.R_SpecialEdition_StatueProduction,
        },
        StartKnightsPromotionCelebration
    }

    NeedsAndRightsByKnightTitle[KnightTitles.Archduke] = {
        ActivateNeedForPlayer, nil,
        ActivateRightForPlayer, {
         Technologies.R_Victory,
         Technologies.R_Theater,
         Technologies.R_SpecialEdition_StatueDario
        },
        --VictroryBecauseOfTitle,
        StartKnightsPromotionCelebration
    }

    if g_PatchIdentifierExtra1 then
        local TechnologiesTableIndex = 4
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Mayor][TechnologiesTableIndex],Technologies.R_Cistern)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Marquees][TechnologiesTableIndex],Technologies.R_Beautification_Brazier)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Marquees][TechnologiesTableIndex],Technologies.R_Beautification_Pillar)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Marquees][TechnologiesTableIndex],Technologies.R_Beautification_Shrine)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Duke][TechnologiesTableIndex],Technologies.R_Beautification_StoneBench)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Duke][TechnologiesTableIndex],Technologies.R_Beautification_Sundial)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Duke][TechnologiesTableIndex],Technologies.R_Beautification_Vase)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Archduke][TechnologiesTableIndex],Technologies.R_Beautification_TriumphalArch)
        table.insert(NeedsAndRightsByKnightTitle[KnightTitles.Archduke][TechnologiesTableIndex],Technologies.R_Beautification_VictoryColumn)
    end

    KnightTitleRequirements = {}
    KnightTitleRequirements[KnightTitles.Mayor] = {}
    KnightTitleRequirements[KnightTitles.Mayor].Settlers = 30
    KnightTitleRequirements[KnightTitles.Mayor].Headquarters = 1
    KnightTitleRequirements[KnightTitles.Mayor].Goods = {    {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Clothes_Supplier, 12},
         {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Food_Supplier, 20},}

    KnightTitleRequirements[KnightTitles.Baron] = {}
    KnightTitleRequirements[KnightTitles.Baron].Storehouse = 1
    KnightTitleRequirements[KnightTitles.Baron].Headquarters = 1
    KnightTitleRequirements[KnightTitles.Baron].Cathedrals = 1
    KnightTitleRequirements[KnightTitles.Baron].Settlers = 60
    KnightTitleRequirements[KnightTitles.Baron].Goods = {    {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Hygiene_Supplier, 18},
         {"AmountOfEntity", Entities.B_Barracks, 1},}

    KnightTitleRequirements[KnightTitles.Earl] = {}
    KnightTitleRequirements[KnightTitles.Earl].Settlers = 80
    KnightTitleRequirements[KnightTitles.Earl].Headquarters = 2
    KnightTitleRequirements[KnightTitles.Earl].DecoratedBuildings = {Goods.G_Sign, 8}
    KnightTitleRequirements[KnightTitles.Earl].Goods = {    {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Entertainment_Supplier, 18},
         {"AmountOfEntitiesInCategory", EntityCategories.Spouse, 20},}

    KnightTitleRequirements[KnightTitles.Marquees] = {}
    KnightTitleRequirements[KnightTitles.Marquees].Storehouse = 2
    KnightTitleRequirements[KnightTitles.Marquees].Cathedrals = 2
    KnightTitleRequirements[KnightTitles.Marquees].RichBuildings = 15
    KnightTitleRequirements[KnightTitles.Marquees].DecoratedBuildings = {Goods.G_Banner, 8}
    KnightTitleRequirements[KnightTitles.Marquees].Goods = {{"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Weapon_Supplier, 20},
         {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Medicine_Supplier, 20},} 

    KnightTitleRequirements[KnightTitles.Duke] = {}
    KnightTitleRequirements[KnightTitles.Duke].Settlers = 150
    KnightTitleRequirements[KnightTitles.Duke].Headquarters = 3
    KnightTitleRequirements[KnightTitles.Duke].DecoratedBuildings = {Goods.G_Candle, 8}
    KnightTitleRequirements[KnightTitles.Duke].Goods = {    {"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Entertainment_Supplier, 30},
         {"AmountOfEntitiesInCategory", EntityCategories.Spouse, 40},
         {"AmountOfEntity", Entities.B_Baths, 2}}

    KnightTitleRequirements[KnightTitles.Archduke] = {}
    KnightTitleRequirements[KnightTitles.Duke].Settlers = 200
    KnightTitleRequirements[KnightTitles.Archduke].Storehouse = 3
    KnightTitleRequirements[KnightTitles.Archduke].Cathedrals = 3
    KnightTitleRequirements[KnightTitles.Archduke].RichBuildings = 30
    KnightTitleRequirements[KnightTitles.Archduke].DecoratedBuildings = {-1, 30}
    KnightTitleRequirements[KnightTitles.Archduke].Goods = {{"AmountOfEntitiesInCategory", EntityCategories.Soldier, 90},}

    if not GUI then
        TechnologiesToProhibit = {

        }
        for i=1, #TechnologiesToProhibit do
         Logic.TechnologySetState(1, TechnologiesToProhibit[i], TechnologyStates.Prohibited)
        end
    end
end

Die Funktion im ganzen. Diese Aufstiegsbedingungen habe ich (totalwarANGEL) entworfen. Vielleicht hast du dadurch eine Inspiration für deine eigenen, ganz speziellen Aufstiegsbedingungen. Immerhin kannst du die ganze Map darauf auslegen, das Erreichen er vorgegeben Ziele zu erschweren. Dadurch bleibt das Spiel spannend.

Rückbau erlauben

Rückbau bedeutet ein Stadt- oder Rohstoffgebäude Gebäude auf Stufe 3 für eine Gebühr um eine Stufe downzugraden. Je nachdem wie die Gebühr festgesetzt wird kann es lohnender sein als ein kompletter Abriss. Mach es nicht zu teuer.

Lokales Skript:

  1. Suche den Eintrag g_UseDowngradeBuildings und trage hinter dem Gleichheitszeichen true ein.
  2. Setze im Table g_DowngradeCosts den Preis fest (2. Eintrag im Table)

Globales Skript:

  1. Rufe UserSetIsBuildingDowngrade() in der Mission_FirstMapAction auf

Militär entlassen

Um Militär zu entlassen muss eine Anpassung im lokalen Skript vorgenommen werden.

Batalione entlassen: g_UseMilitaryRelease auf true setzen
Kriegsmaschinen entlassen: g_UseSiegeEngineRelease auf true setzen

Abriss verbieten

Das Nep bietet eine umfangreiche Sammlung an Funktionen, um den Abriss von Gebäuden einzuschrenken.

AddNoKnockDownNamedEntities("sheepFarm1")

Die angegebene Entity kann nicht mehr abgerissen werden.

Logic.ExecuteInLuaLocalState('NoKnockDownAddEntities("B_Butcher")')

Alle Metzger können nicht mehr abgerissen werden.

Logic.ExecuteInLuaLocalState('NoKnockDownAddEntityCategories("OuterRimBuilding")')

Alle Rohstoffsammler können nicht mehr abgerissen werden.

Abriss erlauben

Und so wird das Abreißen wieder erlaubt:

RemoveNoKnockDownNamedEntities("sheepFarm1")

Das Gebäude "sheepFarm1" kann nun wieder abgerissen werden.

RemoveNoKnockDownEntities("B_Butcher")

Metzger können nun wieder abgerissen werden.

RemoveNoKnockDownEntityCategories("OuterRimBuilding")

Alle Rohstoffgebäude können nun wieder abgerissen werden.

[[table style="width: 100%; border-collapse:collapse;"]]
[[row]]
[[cell style="width: 100%; font-size: 100%; border: 0px solid grey; background-color: #c1d0ff; text-align: center; padding: 10px;"]]
Zurück zu Funktionssammlungen | Drucken | Tags

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License