Beispiel #1
0
        public static AbstractPhysicalObject Orig_AbstractPhysicalObjectFromString(World world, string str)
        {
            // Generating a trampoline may cause a segfault
            apofsDetour.Undo();
            AbstractPhysicalObject ret = SaveState.AbstractPhysicalObjectFromString(world, str);

            apofsDetour.Apply();
            return(ret);
        }
Beispiel #2
0
    public static void AddInventory(StoryGameSession self, AbstractCreature player)
    {
        foreach (AbstractCreature ac in self.Players)
        {
            if (ac == player && !Inventories.ContainsKey((ac.state as PlayerState).playerNumber))
            {
                if (InventorySave != null && InventorySave != string.Empty)
                {
                    List <AbstractPhysicalObject> content = new List <AbstractPhysicalObject>();

                    string[] arrayPlayers = Regex.Split(InventorySave, "<svC>");

                    for (int m = 0; m < arrayPlayers.Length; m++)
                    {
                        string[] arrayContent = Regex.Split(arrayPlayers[m], "<svD>");

                        if (int.Parse(arrayContent[0]) == (player.state as PlayerState).playerNumber)
                        {
                            for (int n = 1; n < arrayContent.Length; n++)
                            {
                                AbstractPhysicalObject apo = null;

                                if (arrayContent[n].Contains("<oA>"))
                                {
                                    apo = SaveState.AbstractPhysicalObjectFromString(self.game.world, arrayContent[n]);
                                }
                                else if (arrayContent[n].Contains("<cA>"))
                                {
                                    apo = SaveState.AbstractCreatureFromString(self.game.world, arrayContent[n], false);
                                }
                                if (apo != null)
                                {
                                    apo.pos = ac.pos;
                                }
                                content.Add(apo);
                            }
                        }
                    }
                    Inventories.Add((ac.state as PlayerState).playerNumber, content);
                }
                else
                {
                    Inventories.Add((ac.state as PlayerState).playerNumber, new List <AbstractPhysicalObject>());
                }
            }
        }
    }