Manuals/LuaScripting.pdf

A forum to discuss custom scenarios, campaigns and modding in general.

Moderator: Panzer Corps 2 Moderators

Post Reply
n0b0dy007
Corporal - 5 cm Pak 38
Corporal - 5 cm Pak 38
Posts: 48
Joined: Sat Dec 07, 2019 3:52 pm

Manuals/LuaScripting.pdf

Post by n0b0dy007 »

This document is out of date (e.g. nothing about the Hero type or the campaign variable's properties).
Is there anywhere that has more up-to-date information on the current API/object model?

In particular, the PC2 Lua API functions used in the DLC scripts:

Code: Select all

world:Exec(action)
world:MakeNewHeroAction(player, hero)
world:MakeAssignHeroAction(unit, hero.id)
world:MakePurchaseAction(owner, u[1], u[2], u[3])
world:MakeDeployAction(unit, zone[cur_hex])
world:MakeRevealAction( player )
world:MakeDeathAction( unit )
world:MakeChooseAction(0, message, title)
Also, the details of how the data in a .pz2scn file can be accessed from a .lua script.
n0b0dy007
Corporal - 5 cm Pak 38
Corporal - 5 cm Pak 38
Posts: 48
Joined: Sat Dec 07, 2019 3:52 pm

Re: Manuals/LuaScripting.pdf

Post by n0b0dy007 »

The file Content/Editor/properties.txt seems to contain an updated version of the PC2 Lua API (the bulk of the listings in pp. 1-6 of the LuaScripting document), including some new global functions:

Code: Select all

+ Player::Equipment NewEquipment()
+ UnitType GetUnitType(string)
+ void Ask(Text, {caption, action}, {caption, action})
+ void Choose(Text, {{Text, Text, string}, ...})
+ Hero NewHero()
+ void TutorialMessage(Text, bool)
and some additional GameWorld properties:

Code: Select all

- (FText) title
- (FText) description
- (string) scenario_id
- (GameOptions) options 	--read-only
- (vector<enum Relation>) relations
- (vector<Side>) sides 	--read-only
- (vector<Player>) players
- (int) gameplay_version
- (FString) custom_rules_file
- (multimap<string,FString>) custom_tables
- (int) round_shift_multiplier
- (bool) allow_disable_turn_limit
- (map<int,Unit>) units
- (map<int,Unit>) graveyard
- (vector<Trigger>) triggers 	--read-only
- (vector<int>) winners
- (enum ScoringAlgorithm) scoring_algorithm
- (int) score_for_kills
- (int) score_for_vh
- (int) score_for_vh_per_turn
- (float) score_multiplier
and a summary of the Hero type:

Code: Select all

Hero
- (int) priority
- (vector<UnitStats::Modifier>) modifiers
- (vector<UnitStats::AttackModifier>) attack_modifiers
- (vector<UnitStats::DefenseModifier>) defense_modifiers
- (vector<enum UnitTrait>) extra_traits
- (vector<enum UnitTrait>) deny_traits
- (UniqueID<Hero>) id
- (FText) name
- (vector<enum UnitClass>) unit_classes
and key enum values:

Code: Select all

enum TargetType
{
	Soft, Hard, Air, Naval
enum DefenseType
{
	Ground, Air, Close
enum UnitTrait
{
	ATSupport, AASupport, SingleEntity, QuadripleGun, PreciseOptics, LowProfile, SuppressingFire, Recon
	ReconPlane, MilitaryEngineer, CloseFighter, LongRanged, Capturable, NoPurchase, NoOverstrength
	ArtySupport, FighterSupport, MachineGun, BridgeEngineer, Paratrooper, Glider, BunkerKiller, CarpetBombing
	ForcedMarch, EntKiller2, EntKiller3, EntKiller4, NoZOC, IgnoresZOC, Camouflage, NoUpgrade, NoReplace
	Minefield, MineKiller, MineSweeper, CounterBattery, NoRetaliation, NoMoveAfterAttack, NoAttackAfterMove
	OpenTop, IgnoresEntrenchment, PhasedMovement, Overrun, NoRetreat, NoSurrender, NoEntrenchment
	Kamikaze, SingleShot, NoSplit, Alpine, LowAltitudeAttack, NoSupply, IncMaxOverstrength, DoubleMove
	DoubleAttack, Splitter, ShockTactics, OverwhelmingAttack, Envelopment, Liberator, DoubleMassAttack
	FastLearner, SixthSense, HitAndRun, LethalAttack, Survivor, FastEntrenchment, SmartEntrenchment
	RiverAssault, FastDeployment, LightningAttack, CombatLuck, PathFinder, Provocator, Avenger, Prudent
	TankKiller, Butcher, DefenderOfPeople, OnTheRoll, Leadership, FearsomeReputation, AggressiveCounterattack
	ThoroughPreparation, Overwatch, CityFighter, Evasion, LastStand, Steamroller, StrikesFirst, OrganizedLanding
	CheapReplacements, Distraction, AllWeatherCombat, IgnoreGroundState, FerociousDefense, TerrainExpert
	TenaciousDefender, FierceFighter, Readiness, Resilient, Evacuation, IgnoreMassAttack, ExtendedSupport
	BlockSupply, ReducedSlots, ZeroSlots, AimedShot, DeepKnowledge, Famous, Legendary, FlagKiller, EntrenchmentSupport
	AllTerrainEntrenchment, HalfTrackSupport, DoubleSupport, ExpertSupport, CripplingBlow, Exterminator
	FastRetreat, Evasive, Scavenger, Interrogator, LearnsFromMistakes, SafeTransit, Ambusher, FieldRepairs
	FirstAid, RiverCrossing, FastRebase, SuperiorManeuver, Vigilant, SkilledRecon, ExpertRecon, SkilledSupport
	Unyielding, AimingAssistance, NoManagement, Amphibious, VulnerableTarget, Submerged, Surfaced
and includes a summary of the various *Action types provided to scenario Condition and Effect functions (i for initial, plane = ground or air):

Code: Select all

TurnAction
- (int) unit
- (Point) iposition
- (int) iplane
+ string GetActionClass(void)

SplitAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
+ string GetActionClass(void)

SwapAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
+ string GetActionClass(void)

EmbarkAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
- (UnitType) type
- (UnitType) itype
+ string GetActionClass(void)

DisembarkAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
- (UnitType) type
- (UnitType) itype
+ string GetActionClass(void)

CaptureFlagAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) flag
- (int) new_owner
- (bool) earn_reward
- (int) reward
+ string GetActionClass(void)

FightAction
- (int) unit
- (Point) iposition
- (int) iplane
- (int) unit
- (Point) iposition
- (int) iplane
- (CombatLog) log
+ string GetActionClass(void)

DeathAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
+ string GetActionClass(void)

SurrenderAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
+ string GetActionClass(void)

AssignHeroAction
- (int) unit
- (Point) iposition
- (int) iplane
- (int) hero_id
+ string GetActionClass(void)

UnassignHeroAction
- (int) unit
- (Point) iposition
- (int) iplane
- (int) hero_id
+ string GetActionClass(void)

DismissHeroAction
- (int) player
- (int) hero_id
+ string GetActionClass(void)

NewHeroAction
- (int) player
- (bool) silent
+ string GetActionClass(void)

PurchaseAction
- (UnitID) id
- (int) player
- (UnitType) type
- (UnitType) transport
- (Faction) faction
- (bool) auxiliary
- (bool) equipment
- (int) cost
- (int) slots
- (int) overstr
- (int) name_id
+ string GetActionClass(void)

UpgradeAction
- (int) unit
- (Point) iposition
- (int) iplane
- (UnitType) type
- (UnitType) itype
- (UnitType) type
- (UnitType) transport
- (int) cost
- (int) slots
- (int) overstr
- (int) xp_penalty
+ string GetActionClass(void)

DeployAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
+ string GetActionClass(void)

UndeployAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
+ string GetActionClass(void)

BindAircraft
- (int) unit
- (Point) iposition
- (int) iplane
+ string GetActionClass(void)

DisbandAction
- (int) unit
- (Point) iposition
- (int) iplane
- (Point) position
- (int) plane
- (int) prestige
- (int) slots
+ string GetActionClass(void)

SwitchAction
- (int) unit
- (Point) iposition
- (int) iplane
- (UnitType) type
- (UnitType) itype
- (UnitType) initial_type
+ string GetActionClass(void)

SelectUnitAction
- (int) unit
+ string GetActionClass(void)

ObjectiveStatusAction
- (int) side
- (int) objective
- (enum ObjectiveStatus) status
+ string GetActionClass(void)

UpgradeMedalAction
- (int) unit
- (Point) iposition
- (int) iplane
+ string GetActionClass(void)

EndTurnAction
- (int) player
+ string GetActionClass(void)

NewRoundAction
- (Weather) weather_forecast
- (GroundState) ground_state
+ string GetActionClass(void)

HistoryAction
- (int) unit
- (Point) iposition
- (int) iplane
+ string GetActionClass(void)

PlayerSurrenderAction
- (int) player
+ string GetActionClass(void)

ChooseAction
- (int) player
- (FText) message
- (string) func
- (vector<ChooseOption>) options
+ string GetActionClass(void)

ChatAction
- (int) player
- (enum ChatMessageType) type
- (int) target
- (FString) text
+ string GetActionClass(void)
and the signatures of their respective generator functions (invoked as world: methods):

Code: Select all

GameWorld
...
+ PurchaseAction MakePurchaseAction(Player,string,string,int)
+ DeployAction MakeDeployAction(Unit,Point)
+ RelocateAction MakeRelocateAction(Unit,Point)
+ RevealAction MakeRevealAction(Player)
+ DeathAction MakeDeathAction(Unit)
+ ChooseAction MakeChooseAction(int,FText,string)
+ NewHeroAction MakeNewHeroAction(int,Hero,std::default_delete<Hero> >)
+ AssignHeroAction MakeAssignHeroAction(Unit,int)
+ ChatAction MakeChatAction(int)
+ SwitchAction MakeSwitchAction(Unit)
+ UpgradeAction MakeUpgradeAction(Unit,string,string,int)
+ UnassignHeroAction MakeUnassignHeroAction(Unit,int)
+ DismissHeroAction MakeDismissHeroAction(int,int)
+ DisbandAction MakeDisbandAction(Unit)
Post Reply

Return to “Panzer Corps 2 Scenario Design”