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); }
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); }
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); }
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); }
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(); }
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); }