Last active
March 3, 2018 14:53
-
-
Save Tarmean/d484da8a66ec445ae1e12ca030cf3949 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function SerializePawn(pawn) | |
| -- Used in scripts | |
| -- GetType(), GetId(), IsFrozen(), SetFrozen(bool), IsFire(), SetFire(bool), | |
| -- SetPowered(bool), IsActive(), SetActive(bool), SetNeutral(bool), | |
| -- SetCustomAnim(string), FlyAway(), Move(Point), | |
| -- Retreat(), SetPriorityTarget(Point), GetTarget(), FireWeapon(Point (offset), 1), | |
| -- SetMoveSpeed(int), GetMoveSpeed(), SetMech(), IsBusy(), IsUndoPossible() | |
| -- IsWeaponArmed(), GetArmedWeaponId(), IsSelected(), SetHealth(int), | |
| -- GetHealth() SetMissionCritical(bool), SetAcid(bool), IsAcid(), | |
| -- SpawnAnimation(), GetSpace(), SetSpace(Point) | |
| -- SetTeam(TEAM_PLAYER|TEAM_ENEMY|...), GetTeam(), Board:AddPawn(Pawn, Point), | |
| -- Board:GetPawn(pawn_id), Board:RemovePawn(pawn_id), | |
| -- Board:IsPawnAlive(pawn_id), Board:GetPawnSpace(pawn_id), | |
| -- Board:IsPowered(Point) | |
| -- Similar names in executable that seem to work: | |
| -- IsShield, SetShield GetSelectedWeapon AddWeapon IsWeaponArmed IsDead | |
| -- AddMoveBonus SetPowered IsGrappled IsGuarding Fall IsFlying IsRanged | |
| -- SetMutation SetInvisible IsPlayer IsEnemy GetDamage GetMechName | |
| local ret = {} | |
| -- Debug stuff: | |
| ret.Type = pawn:GetType() | |
| ret.Id = pawn:GetId() | |
| ret.IsUndoPossible = pawn:IsUndoPossible() | |
| ret.IsBusy = pawn:IsBusy() | |
| ret.IsJumper = pawn:IsJumper() | |
| ret.IsTeleporter = pawn:IsTeleporter() | |
| ret.Team = pawn:GetTeam() | |
| ret.Space = pawn:GetSpace() | |
| ret.Target = pawn:GetTarget() | |
| ret.Health = pawn:GetHealth() | |
| ret.IsFrozen = pawn:IsFrozen() | |
| ret.IsFire = pawn:IsFire() | |
| ret.IsAcid = pawn:IsAcid() | |
| ret.IsActive = pawn:IsActive() | |
| ret.MoveSpeed = pawn:GetMoveSpeed() | |
| ret.IsWeaponArmed = pawn:IsWeaponArmed() | |
| ret.ArmedWeaponId = pawn:GetArmedWeaponId() | |
| ret.PathProf = pawn:GetPathProf() | |
| ret.IsPawnAlive = Board:IsPawnAlive(ret.Id) | |
| -- -- Only for rockets in satellite mission I think | |
| ret.IsPowered = Board:IsPowered(ret.Space) | |
| ret.IsShield = pawn:IsShield() | |
| ret.IsWeaponArmed = pawn:IsWeaponArmed() | |
| ret.IsDead = pawn:IsDead() | |
| ret.IsGrappled = pawn:IsGrappled() | |
| ret.IsGuarding = pawn:IsGuarding() | |
| ret.IsFlying = pawn:IsFlying() | |
| ret.IsRanged = pawn:IsRanged() | |
| ret.IsPlayer = pawn:IsPlayer() | |
| ret.IsEnemy = pawn:IsEnemy() | |
| ret.SelectedWeapon = pawn:GetSelectedWeapon() | |
| ret.MechName = pawn:GetMechName() | |
| return ret | |
| end | |
| ModHelper = {} | |
| ModHelper.ObjectiveCallbacks = {} | |
| local oldBaseObjectives = Mission.BaseObjectives | |
| function ModHelper:OnObjective(callback) | |
| self.ObjectiveCallbacks[#self.ObjectiveCallbacks+1] = callback | |
| end | |
| function Mission:BaseObjectives() | |
| oldBaseObjectives(self) | |
| for _, v in ipairs(ModHelper.ObjectiveCallbacks) do | |
| v() | |
| end | |
| end | |
| function ShowSelectedPawn() | |
| local pawn_ids = extract_table(Board:GetPawns(TEAM_NONE)) | |
| for _, pawn_id in ipairs(pawn_ids) do | |
| local pawn = Board:GetPawn(pawn_id) | |
| if pawn:IsSelected() then | |
| local serialized = save_table(SerializePawn(pawn)) | |
| Game:AddObjective(serialized, OBJ_STANDARD) | |
| end | |
| end | |
| end | |
| ModHelper:OnObjective(ShowSelectedPawn) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment