protected void AddSpawnEntry(NpcCustomEntryId id, int timeToSpawnsecs, int amount, float amountMod, BrainState brainState = BrainState.DefenceTownEventMove) { int num1 = 0; int num2 = (int)((double)amount * (double)amountMod); for (int index1 = 1; index1 <= num2; ++index1) { int index2 = index1 % this.MovingPaths.Count; if (index2 == 0) { num1 += 2000; } NPCEntry entry = NPCMgr.GetEntry((uint)id); if (entry.Rank >= CreatureRank.Boss) { index2 = Utility.Random(0, this.MovingPaths.Count - 1); } this.NpcEntries.Add(new NpcSpawnEntry() { BrainState = brainState, TimeToSpawnMillis = timeToSpawnsecs * 1000 + num1, NpcEntry = entry, MovingPoints = (List <Vector3>) this.MovingPaths[index2] }); } }
private static void CreateCustomEntry(NPCId npcId, NpcCustomEntryId customEntryId, float healthMod, float otherStatsMod, int maxLevel, float speedMod, NpcCustomEntries.NpcCustomEntrySettings npcCustomEntrySettings, bool isAggressive = true) { NPCEntry entry = NPCMgr.GetEntry(npcId).Clone <NPCEntry>(); entry.SetLevel(maxLevel - 5); if (npcCustomEntrySettings.Health.HasValue) { entry.SetHealth((int)((double)npcCustomEntrySettings.Health.Value * (double)healthMod)); } if (npcCustomEntrySettings.PDef.HasValue) { entry.Resistances[0] = (int)((double)npcCustomEntrySettings.PDef.Value * (double)otherStatsMod); } if (npcCustomEntrySettings.MDef.HasValue) { entry.Resistances[1] = (int)((double)npcCustomEntrySettings.MDef.Value * (double)otherStatsMod); } if (npcCustomEntrySettings.Damage.HasValue) { entry.MinDamage = (float)npcCustomEntrySettings.Damage.Value * 0.9f * otherStatsMod; entry.MaxDamage = (float)npcCustomEntrySettings.Damage.Value * 1.1f * otherStatsMod; } if (npcCustomEntrySettings.Speed.HasValue) { entry.RunSpeed = npcCustomEntrySettings.Speed.Value * speedMod; entry.WalkSpeed = npcCustomEntrySettings.Speed.Value * speedMod; } entry.IsAgressive = isAggressive; NPCMgr.AddEntry((uint)customEntryId, entry); entry.NPCId = npcId; }
private static void CreateCustomEntry(NPCId npcId, NpcCustomEntryId customEntryId, float healthMod, float otherStatsMod, int maxLevel, float speedMod, NpcCustomEntrySettings npcCustomEntrySettings, bool isAggressive = true) { var entry = NPCMgr.GetEntry(npcId).Clone(); entry.SetLevel(maxLevel - 5); if (npcCustomEntrySettings.Health != null) { entry.SetHealth((int)(npcCustomEntrySettings.Health.Value * healthMod)); } if (npcCustomEntrySettings.PDef != null) { entry.Resistances[(int)DamageSchool.Physical] = (int)(npcCustomEntrySettings.PDef.Value * otherStatsMod); } if (npcCustomEntrySettings.MDef != null) { entry.Resistances[(int)DamageSchool.Magical] = (int)(npcCustomEntrySettings.MDef.Value * otherStatsMod); } if (npcCustomEntrySettings.Damage != null) { entry.MinDamage = npcCustomEntrySettings.Damage.Value * 0.9f * otherStatsMod; entry.MaxDamage = npcCustomEntrySettings.Damage.Value * 1.1f * otherStatsMod; } if (npcCustomEntrySettings.Speed != null) { entry.RunSpeed = npcCustomEntrySettings.Speed.Value * speedMod; entry.WalkSpeed = npcCustomEntrySettings.Speed.Value * speedMod; } entry.IsAgressive = isAggressive; NPCMgr.AddEntry((uint)customEntryId, entry); entry.NPCId = npcId; }
protected void AddSpawnEntry(NpcCustomEntryId id, int timeToSpawnsecs, int amount, float amountMod, BrainState brainState = BrainState.DefenceTownEventMove) { var additionalTime = 0; var amountToSpawn = (int)(amount * amountMod); for (int i = 1; i <= amountToSpawn; i++) { var index = i % MovingPaths.Count; if (index == 0) { additionalTime += 2000; } var npcEntry = NPCMgr.GetEntry((uint)id); if (npcEntry.Rank >= CreatureRank.Boss) { index = Util.Utility.Random(0, MovingPaths.Count - 1); } var entry = new NpcSpawnEntry { BrainState = brainState, TimeToSpawnMillis = timeToSpawnsecs * 1000 + additionalTime, NpcEntry = npcEntry, MovingPoints = MovingPaths[index] }; NpcEntries.Add(entry); } }