Esempio n. 1
0
        static void SpawnPlayer(ArenaClient client)
        {
            var     charInfo = client.CharInfo;
            NPCInst npc      = new NPCInst(NPCDef.Get(charInfo.BodyMesh == HumBodyMeshs.HUM_BODY_NAKED0 ? "maleplayer" : "femaleplayer"))
            {
                UseCustoms     = true,
                CustomBodyTex  = charInfo.BodyTex,
                CustomHeadMesh = charInfo.HeadMesh,
                CustomHeadTex  = charInfo.HeadTex,
                CustomVoice    = charInfo.Voice,
                CustomFatness  = charInfo.Fatness,
                CustomScale    = new Vec3f(charInfo.BodyWidth, 1.0f, charInfo.BodyWidth),
                CustomName     = charInfo.Name
            };

            foreach (string e in client.HordeClass.Equipment)
            {
                ItemInst item = new ItemInst(ItemDef.Get(e));
                npc.Inventory.AddItem(item);
                npc.EffectHandler.TryEquipItem(item);
            }

            if (client.HordeClass.NeedsBolts)
            {
            }

            npc.Inventory.AddItem(new ItemInst(ItemDef.Get("hptrank")));

            Vec3f  spawnPos = Randomizer.GetVec3fRad(activeDef.SpawnPos, activeDef.SpawnRange);
            Angles spawnAng = Randomizer.GetYaw();

            //npc.TeamID = 0;
            npc.Spawn(activeWorld, spawnPos, spawnAng);
            client.SetControl(npc);
        }
Esempio n. 2
0
        static NPCInst SpawnEnemy(HordeEnemy enemy, Vec3f spawnPoint, float spawnRange = 100)
        {
            NPCInst npc = new NPCInst(NPCDef.Get(enemy.NPCDef));

            if (enemy.WeaponDef != null)
            {
                ItemInst item = new ItemInst(ItemDef.Get(enemy.WeaponDef));
                npc.Inventory.AddItem(item);
                npc.EffectHandler.TryEquipItem(item);
            }

            if (enemy.ArmorDef != null)
            {
                ItemInst item = new ItemInst(ItemDef.Get(enemy.ArmorDef));
                npc.Inventory.AddItem(item);
                npc.EffectHandler.TryEquipItem(item);
            }

            npc.SetHealth(enemy.Health, enemy.Health);

            Vec3f  spawnPos = Randomizer.GetVec3fRad(spawnPoint, spawnRange);
            Angles spawnAng = Randomizer.GetYaw();

            //npc.TeamID = 1;
            npc.BaseInst.SetNeedsClientGuide(true);
            npc.Spawn(activeWorld, spawnPos, spawnAng);
            return(npc);
        }
Esempio n. 3
0
        public void FMSpawn()
        {
            if (GameMode.IsActive)
            {
                GameMode.ActiveMode.Leave(this);
            }

            KillCharacter();
            SetTeamID(TeamIdent.FFAPlayer);

            NPCDef  def = NPCDef.Get(charInfo.BodyMesh == HumBodyMeshs.HUM_BODY_NAKED0 ? "maleplayer" : "femaleplayer");
            NPCInst npc = new NPCInst(def)
            {
                UseCustoms             = true,
                CustomBodyTex          = charInfo.BodyTex,
                CustomHeadMesh         = charInfo.HeadMesh,
                CustomHeadTex          = charInfo.HeadTex,
                CustomVoice            = charInfo.Voice,
                CustomFatness          = charInfo.Fatness,
                CustomScale            = new Vec3f(charInfo.BodyWidth, 1.0f, charInfo.BodyWidth),
                CustomName             = charInfo.Name,
                DropUnconsciousOnDeath = true,
                UnconsciousDuration    = 15 * TimeSpan.TicksPerSecond,
            };

            ItemDef.ForEach(itemDef =>
            {
                var item = new ItemInst(itemDef);
                npc.Inventory.AddItem(item);
                if (string.Equals(itemDef.CodeName, "ItMw_1h_Bau_Mace", StringComparison.OrdinalIgnoreCase) ||
                    string.Equals(itemDef.CodeName, "ITAR_Prisoner", StringComparison.OrdinalIgnoreCase))
                {
                    npc.EffectHandler.TryEquipItem(item);
                }
                else if (itemDef.ItemType == ItemTypes.AmmoBow || itemDef.ItemType == ItemTypes.AmmoXBow)
                {
                    item.SetAmount(100);
                }
            });

            if (npc.ModelDef.TryGetOverlay("1HST1", out ScriptOverlay ov))
            {
                npc.ModelInst.ApplyOverlay(ov);
            }
            if (npc.ModelDef.TryGetOverlay("2HST1", out ov))
            {
                npc.ModelInst.ApplyOverlay(ov);
            }

            var pair = spawnPositions.GetRandom();

            npc.Spawn(WorldInst.List[0], pair.Item1, pair.Item2);
            this.SetControl(npc);
            npc.AllowHitAttacker.Add(DuelMode.CheckHitDetection);
        }
Esempio n. 4
0
        static void SpawnNPC(WorldInst world, PosAng posAng)
        {
            var npc = BRScenario.NPCs.GetRandom();

            NPCDef def = NPCDef.Get(npc.Definition);

            if (def == null)
            {
                return;
            }

            NPCInst inst = new NPCInst(def);

            inst.BaseInst.SetNeedsClientGuide(true);
            inst.TeamID        = 1;
            posAng.Position.Y += 50;
            inst.Protection    = npc.Protection;
            inst.Damage        = npc.Damage;
            inst.Spawn(world, posAng.Position, posAng.Angles);

            var agent = CreateAgent();

            agent.Add(inst);
        }
Esempio n. 5
0
        static void AddNPC(string codeName, DDLNpc instance)
        {
            DDLString str;

            if (!instance.TryGetValue("visual", out str))
            {
                return;
            }

            string modelName = Path.GetFileNameWithoutExtension(str.Value);

            ModelDef model;

            if (!ModelDef.TryGetModel(modelName, out model))
            {
                model = new ModelDef(modelName, str.Value);
                model.Create();
            }

            NPCDef npc = NPCDef.Get(codeName);

            if (npc == null)
            {
                npc = new NPCDef(codeName);
            }
            else
            {
                npc.Delete();
            }

            npc.Model = model;

            if (instance.TryGetValue("name", out str))
            {
                npc.Name = str.Value;
            }
            if (string.IsNullOrWhiteSpace(npc.Name))
            {
                npc.Name = "no name (" + codeName + ")";
            }

            if (instance.TryGetValue("bodymesh", out str))
            {
                npc.BodyMesh = str.Value;
            }
            if (instance.TryGetValue("headmesh", out str))
            {
                npc.HeadMesh = str.Value;
            }

            DDLInt dint;

            if (instance.TryGetValue("bodytex", out dint))
            {
                npc.BodyTex = dint.Value;
            }
            if (instance.TryGetValue("headtex", out dint))
            {
                npc.HeadTex = dint.Value;
            }

            npc.Create();
        }
Esempio n. 6
0
        protected NPCInst CreateNPC(NPCClass def, int teamID, CharCreationInfo cInfo = null)
        {
            if (def == null)
            {
                return(null);
            }

            NPCInst npc;

            if (def.Definition == null)
            {
                if (cInfo == null)
                {
                    npc = new NPCInst(NPCDef.Get("maleplayer"));
                    npc.RandomizeCustomVisuals(def.Name, true);
                }
                else
                {
                    npc = new NPCInst(NPCDef.Get(cInfo.BodyMesh == HumBodyMeshs.HUM_BODY_NAKED0 ? "maleplayer" : "femaleplayer"))
                    {
                        UseCustoms     = true,
                        CustomBodyTex  = cInfo.BodyTex,
                        CustomHeadMesh = cInfo.HeadMesh,
                        CustomHeadTex  = cInfo.HeadTex,
                        CustomVoice    = cInfo.Voice,
                        CustomFatness  = cInfo.Fatness,
                        CustomScale    = new Vec3f(cInfo.BodyWidth, 1.0f, cInfo.BodyWidth),
                        CustomName     = cInfo.Name
                    };
                }
            }
            else
            {
                npc = new NPCInst(NPCDef.Get(def.Definition));
            }

            // add inventory items
            if (def.ItemDefs != null)
            {
                foreach (var invItem in def.ItemDefs)
                {
                    var item = new ItemInst(ItemDef.Get(invItem.DefName));
                    item.SetAmount(invItem.Amount);
                    npc.Inventory.AddItem(item);
                    npc.EffectHandler.TryEquipItem(item);
                }
            }

            // add overlays
            if (def.Overlays != null)
            {
                foreach (var overlay in def.Overlays)
                {
                    if (npc.ModelDef.TryGetOverlay(overlay, out ScriptOverlay ov))
                    {
                        npc.ModelInst.ApplyOverlay(ov);
                    }
                }
            }

            npc.TeamID = teamID;

            npc.Protection = def.Protection;
            npc.Damage     = def.Damage;
            npc.SetHealth(def.HP, def.HP);
            npc.Guild = def.Guild;
            return(npc);
        }