Пример #1
0
        protected void add_temporary_unit(Vector2 loc, int team, string identifier, string[] data_ary)
        {
            Game_Actor actor = Global.game_actors.new_actor();

            actor.name     = data_ary[0].Split('|')[0];
            actor.class_id = Convert.ToInt32(data_ary[1].Split('|')[0]);
            actor.gender   = Convert.ToInt32(data_ary[2].Split('|')[0]);
            actor.level    = Convert.ToInt32(data_ary[3].Split('|')[0]);
            actor.exp      = Convert.ToInt32(data_ary[4].Split('|')[0]);
            //actor.maxhp = Convert.ToInt32(data_ary[6].Split('|')[0]);
            actor.hp = Convert.ToInt32(data_ary[7].Split('|')[0]);

            /*actor.stats[0] = Convert.ToInt32(data_ary[8].Split('|')[0]);
             * actor.stats[1] = Convert.ToInt32(data_ary[9].Split('|')[0]);
             * actor.stats[2] = Convert.ToInt32(data_ary[10].Split('|')[0]);
             * actor.stats[3] = Convert.ToInt32(data_ary[11].Split('|')[0]);
             * actor.stats[4] = Convert.ToInt32(data_ary[12].Split('|')[0]);
             * actor.stats[5] = Convert.ToInt32(data_ary[13].Split('|')[0]);
             * actor.stats[6] = Convert.ToInt32(data_ary[14].Split('|')[0]);*/

            // If units were created with NUM_ITEMS = 6,
            // and then NUM_ITEMS was changed to 4 or 5, things would break
            // Come up with a longterm solution//Yeti
            List <Item_Data> items = new List <Item_Data>();

            for (int item_index = 0; item_index < Global.ActorConfig.NumItems; item_index++)
            {
                string[] item_ary = data_ary[17 + item_index].Split('|')[0].Split(new string[] { ", " }, StringSplitOptions.None);
                items.Add(new Item_Data(Convert.ToInt32(item_ary[0]),
                                        Convert.ToInt32(item_ary[1]), Convert.ToInt32(item_ary[2])));
            }
            actor.set_items(items);

            int index_after_items = 17 + Global.ActorConfig.NumItems;

            string[] wexp_ary = data_ary[index_after_items]
                                .Split('|')[0].Split(new string[] { ", " }, StringSplitOptions.None);
            for (int i = 0; i < Global.weapon_types.Count - 1; i++)
            {
                if (i < wexp_ary.Length)
                {
                    actor.wexp_set(Global.weapon_types[i + 1], Convert.ToInt32(wexp_ary[i]), false);
                }
            }
            actor.clear_wlvl_up();

            if (team <= 0)
            {
                team = Convert.ToInt32(data_ary[5].Split('|')[0]);
            }
            int priority = Convert.ToInt32(data_ary[15].Split('|')[0]);
            int mission  = Convert.ToInt32(data_ary[16].Split('|')[0]);

            new_unit_id();
            var new_unit = Objects.add_unit(
                new Game_Unit(Last_Added_Unit_Id, loc, team, priority, actor.id), identifier, mission);
        }
Пример #2
0
        protected void add_generic_unit(Vector2 loc, int team, string identifier, string[] data_ary)
        {
            Game_Actor actor = Global.game_actors.new_actor();

            actor.name     = data_ary[0].Split('|')[0];
            actor.class_id = Convert.ToInt32(data_ary[1].Split('|')[0]); //Debug
            actor.gender   = Convert.ToInt32(data_ary[2].Split('|')[0]);
            actor.level_down();
            actor.exp = 0;

            int level             = Convert.ToInt32(data_ary[3].Split('|')[0]);
            int exp               = Convert.ToInt32(data_ary[4].Split('|')[0]);
            int prepromote_levels = Convert.ToInt32(data_ary[6].Split('|')[0]);
            int build             = Convert.ToInt32(data_ary[7].Split('|')[0]);
            int con               = Convert.ToInt32(data_ary[8].Split('|')[0]);

            // If units were created with NUM_ITEMS = 6,
            // and then NUM_ITEMS was changed to 4 or 5, things would break
            // Come up with a longterm solution//Yeti
            List <Item_Data> items = new List <Item_Data>();

            for (int item_index = 0; item_index < Global.ActorConfig.NumItems; item_index++)
            {
                string[] item_ary = data_ary[11 + item_index].Split('|')[0].Split(new string[] { ", " }, StringSplitOptions.None);
                items.Add(new Item_Data(Convert.ToInt32(item_ary[0]),
                                        Convert.ToInt32(item_ary[1]), Convert.ToInt32(item_ary[2])));
            }
            actor.set_items(items);

            int index_after_items = 11 + Global.ActorConfig.NumItems;

            string[] wexp_ary = data_ary[index_after_items + 0]
                                .Split('|')[0].Split(new string[] { ", " }, StringSplitOptions.None);
            int[] wexp = Enumerable.Range(0, Global.weapon_types.Count - 1)
                         .Select(x => x < wexp_ary.Length ? Convert.ToInt32(wexp_ary[x]) : 0)
                         .ToArray();

            actor.setup_generic(
                Convert.ToInt32(data_ary[1].Split('|')[0]), level, exp,
                prepromote_levels, (Generic_Builds)build, con, wexp: wexp);

            if (team <= 0)
            {
                team = Convert.ToInt32(data_ary[5].Split('|')[0]);
            }
            int priority = Convert.ToInt32(data_ary[9].Split('|')[0]);
            int mission  = Convert.ToInt32(data_ary[10].Split('|')[0]);

            new_unit_id();
            var new_unit = Objects.add_unit(
                new Game_Unit(Last_Added_Unit_Id, loc, team, priority, actor.id), identifier, mission);
        }