/// <summary> /// Creates the character. /// </summary> /// <param name="name">The name.</param> /// <param name="characterClass">The character class.</param> /// <param name="level">The level.</param> /// <param name="slot">The slot.</param> /// <returns>The created character.</returns> protected virtual Character CreateCharacter(string name, CharacterClassNumber characterClass, int level, byte slot) { var character = this.Context.CreateNew <Character>(); character.CharacterClass = this.GameConfiguration.CharacterClasses.First(c => c.Number == (byte)characterClass); character.Name = name; character.CharacterSlot = slot; character.CreateDate = DateTime.Now; character.KeyConfiguration = new byte[30]; foreach ( var attribute in character.CharacterClass.StatAttributes.Select( a => this.Context.CreateNew <StatAttribute>(a.Attribute, a.BaseValue))) { character.Attributes.Add(attribute); } character.CurrentMap = character.CharacterClass.HomeMap; var spawnGate = character.CurrentMap.ExitGates.Where(m => m.IsSpawnGate).SelectRandom(); character.PositionX = (byte)Rand.NextInt(spawnGate.X1, spawnGate.X2); character.PositionY = (byte)Rand.NextInt(spawnGate.Y1, spawnGate.Y2); character.Attributes.First(a => a.Definition == Stats.Level).Value = level; character.Experience = DataInitialization.CalculateNeededExperience(level); character.LevelUpPoints = (int)((character.Attributes.First(a => a.Definition == Stats.Level).Value - 1) * character.CharacterClass.StatAttributes.First(a => a.Attribute == Stats.PointsPerLevelUp).BaseValue); character.Inventory = this.Context.CreateNew <ItemStorage>(); character.Inventory.Money = 10000000; return(character); }
// See also http://muonlinefanz.com/guide/quests/treasure/ private void TreasuresOfMu(CharacterClassNumber characterClass, byte itemNumber) { var sebinaThePriestess = this.GameConfiguration.Monsters.First(m => m.Number == 235); var treasuresOfMu = this.Context.CreateNew <QuestDefinition>(); sebinaThePriestess.Quests.Add(treasuresOfMu); treasuresOfMu.QuestGiver = sebinaThePriestess; treasuresOfMu.Name = "Treasures of MU"; treasuresOfMu.Group = QuestConstants.LegacyQuestGroup; treasuresOfMu.Number = 1; treasuresOfMu.RequiredStartMoney = 2000000; treasuresOfMu.MinimumCharacterLevel = 150; treasuresOfMu.QualifiedCharacter = this.GetCharacterClass(characterClass); this.AddItemRequirement(treasuresOfMu, 14, itemNumber, 0, 62, 76); // Rewards: var pointReward = this.Context.CreateNew <QuestReward>(); pointReward.Value = 10; pointReward.RewardType = QuestRewardType.LevelUpPoints; treasuresOfMu.Rewards.Add(pointReward); var characterClassEvolution = this.Context.CreateNew <QuestReward>(); characterClassEvolution.RewardType = QuestRewardType.CharacterEvolutionFirstToSecond; treasuresOfMu.Rewards.Add(characterClassEvolution); }
// See also http://muonlinefanz.com/guide/quests/hero-status/ private void GainHeroStatus(CharacterClassNumber characterClass) { var marlon = this.GameConfiguration.Monsters.First(m => m.Number == 229); var heroStatus = this.Context.CreateNew <QuestDefinition>(); marlon.Quests.Add(heroStatus); heroStatus.QuestGiver = marlon; heroStatus.Name = "Gain Hero Status"; heroStatus.Group = QuestConstants.LegacyQuestGroup; heroStatus.Number = 2; heroStatus.RequiredStartMoney = 3000000; heroStatus.MinimumCharacterLevel = 220; heroStatus.QualifiedCharacter = this.GetCharacterClass(characterClass); this.AddItemRequirement(heroStatus, 14, Items.Quest.ScrollOfEmperorNumber, 1, 72, 108); // Rewards: // One character level point more, after level 220 var pointReward = this.Context.CreateNew <QuestReward>(); pointReward.Value = 1; pointReward.AttributeReward = Stats.PointsPerLevelUp; pointReward.RewardType = QuestRewardType.Attribute; heroStatus.Rewards.Add(pointReward); }
/// <inheritdoc/> protected override Character CreateCharacter(string name, CharacterClassNumber characterClass, int level, byte slot) { var character = base.CreateCharacter(name, characterClass, level, slot); character.Inventory !.Items.Add(this.CreateJewel(52, Items.Quest.FeatherOfDarkPhoenixNumber)); character.Inventory.Items.Add(this.CreateJewel(53, Items.Quest.FlameOfDeathBeamKnightNumber)); character.Inventory.Items.Add(this.CreateJewel(55, Items.Quest.HornOfHellMaineNumber)); return(character); }
/// <inheritdoc/> protected override Character CreateCharacter(string name, CharacterClassNumber characterClass, int level, byte slot) { var character = base.CreateCharacter(name, characterClass, level, slot); character.CurrentMap = this.GameConfiguration.Maps.First(map => map.Number == Devias.Number); character.PositionX = 184; character.PositionY = 31; character.Inventory.Money = 100000000; return(character); }
// See also http://muonlinefanz.com/guide/quests/scroll/ private void FindScrollOfEmperor(CharacterClassNumber characterClass) { var sebinaThePriestess = this.GameConfiguration.Monsters.First(m => m.Number == 235); var findScrollOfEmperor = this.Context.CreateNew <QuestDefinition>(); sebinaThePriestess.Quests.Add(findScrollOfEmperor); findScrollOfEmperor.QuestGiver = sebinaThePriestess; findScrollOfEmperor.Name = "Find the 'Scroll of Emperor'"; findScrollOfEmperor.Group = QuestConstants.LegacyQuestGroup; findScrollOfEmperor.Number = 0; findScrollOfEmperor.RequiredStartMoney = 1000000; findScrollOfEmperor.MinimumCharacterLevel = 150; findScrollOfEmperor.QualifiedCharacter = this.GetCharacterClass(characterClass); this.AddItemRequirement(findScrollOfEmperor, 14, Items.Quest.ScrollOfEmperorNumber, 0, 45, 60); // Rewards: var pointReward = this.Context.CreateNew <QuestReward>(); pointReward.Value = 10; pointReward.RewardType = QuestRewardType.LevelUpPoints; findScrollOfEmperor.Rewards.Add(pointReward); }
private CharacterClass CreateFairyElf(CharacterClassNumber number, string name, bool isMaster, CharacterClass?nextGenerationClass, bool canGetCreated) { var result = this.Context.CreateNew <CharacterClass>(); this.GameConfiguration.CharacterClasses.Add(result); result.CanGetCreated = canGetCreated; result.HomeMap = this.GameConfiguration.Maps.FirstOrDefault(map => map.Number == NoriaMapId); result.Number = (byte)number; result.Name = name; result.IsMasterClass = isMaster; result.NextGenerationClass = nextGenerationClass; result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.Level, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.PointsPerLevelUp, 5, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseStrength, 22, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseAgility, 25, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseVitality, 20, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseEnergy, 15, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentHealth, 80, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentMana, 30, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentAbility, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentShield, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.AmmunitionAmount, 0, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.IsInSafezone, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.Resets, 0, false)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalStrength, 1, Stats.BaseStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalAgility, 1, Stats.BaseAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalVitality, 1, Stats.BaseVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalEnergy, 1, Stats.BaseEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseBase, 1.0f / 10, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvm, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvp, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvm, 0.25f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 0.1f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 2, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 5, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 1.5f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 0.25f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 0.6f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 3, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.2f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.3f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.2f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.3f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 0.5f, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShieldTemp, 2f, Stats.Level, InputOperator.Exponentiate)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1f / 30f, Stats.MaximumShieldTemp)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 1.5f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 1.5f, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 1, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 2, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 7, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 4, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 14, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 8, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1, Stats.MinimumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1, Stats.MaximumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumGuildSize, 0.1f, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.HealthRecoveryMultiplier, 0.01f, Stats.IsInSafezone)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.ShieldRecoveryMultiplier, 0.01f, Stats.IsInSafezone)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(39, Stats.MaximumHealth)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(6, Stats.MaximumMana)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.SkillMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(2, Stats.AbilityRecoveryAbsolute)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1.0f / 33f, Stats.AbilityRecoveryMultiplier)); this.AddCommonBaseAttributeValues(result.BaseAttributeValues, isMaster); return(result); }
private CharacterClass CreateMagicGladiator(CharacterClassNumber number, string name, bool isMaster, CharacterClass nextGenerationClass, bool canGetCreated) { var result = this.Context.CreateNew <CharacterClass>(); this.GameConfiguration.CharacterClasses.Add(result); result.CanGetCreated = canGetCreated; result.HomeMap = this.GameConfiguration.Maps.FirstOrDefault(map => map.Number == LorenciaMapId); result.Number = (byte)number; result.Name = name; result.IsMasterClass = isMaster; result.LevelRequirementByCreation = 220; result.NextGenerationClass = nextGenerationClass; result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.Level, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.PointsPerLevelUp, 7, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseStrength, 26, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseAgility, 26, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseVitality, 26, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseEnergy, 16, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentHealth, 110, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentMana, 60, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentAbility, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentShield, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.IsInSafezone, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.Resets, 0, false)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalStrength, 1, Stats.BaseStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalAgility, 1, Stats.BaseAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalVitality, 1, Stats.BaseVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalEnergy, 1, Stats.BaseEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseBase, 1.0f / 5, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvm, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvp, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvm, 1.0f / 3, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 0.25f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 2, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackSpeed, 1.0f / 15, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 5, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 1.5f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 0.25f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 3.5f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 3, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.15f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.3f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.25f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.2f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 0.5f, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShieldTemp, 2f, Stats.Level, InputOperator.Exponentiate)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1f / 30f, Stats.MaximumShieldTemp)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 2, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 1, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 1, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 2, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 6, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 4, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 12, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 8, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1, Stats.MinimumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1, Stats.MaximumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumWizBaseDmg, 1.0f / 9, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumWizBaseDmg, 1.0f / 4, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumGuildSize, 0.1f, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.HealthRecoveryMultiplier, 0.01f, Stats.IsInSafezone)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.ShieldRecoveryMultiplier, 0.01f, Stats.IsInSafezone)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(57, Stats.MaximumHealth)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(7, Stats.MaximumMana)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(2, Stats.SkillMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1.0f, Stats.WizardryAttackDamageIncrease)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(2, Stats.AbilityRecoveryAbsolute)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1.0f / 33f, Stats.AbilityRecoveryMultiplier)); this.AddCommonBaseAttributeValues(result.BaseAttributeValues, isMaster); return(result); }
/// <summary> /// Gets the character class of the specified number. /// </summary> /// <param name="classNumber">The class number.</param> /// <returns>The character class of the specified number.</returns> protected CharacterClass?GetCharacterClass(CharacterClassNumber classNumber) { return(this.GameConfiguration.CharacterClasses.FirstOrDefault(c => c.Number == (byte)classNumber)); }
/// <summary> /// Creates the dark lord. /// </summary> /// <param name="characterClassNumber">The character class number.</param> /// <returns>The created dark lord.</returns> protected Character CreateDarkLord(CharacterClassNumber characterClassNumber) { return(this.CreateCharacter(this.AccountName + "Dl", characterClassNumber, this.Level, 3)); }
/// <summary> /// Creates the elf. /// </summary> /// <param name="characterClassNumber">The character class number.</param> /// <returns>The created elf.</returns> protected Character CreateElf(CharacterClassNumber characterClassNumber) { return(this.CreateCharacter(this.AccountName + "Elf", characterClassNumber, this.Level, 2)); }
/// <summary> /// Creates the wizard. /// </summary> /// <param name="characterClassNumber">The character class number.</param> /// <returns>The created wizard.</returns> protected Character CreateWizard(CharacterClassNumber characterClassNumber) { return(this.CreateCharacter(this.AccountName + "Dw", characterClassNumber, this.Level, 1)); }
/// <summary> /// Creates the knight. /// </summary> /// <param name="characterClassNumber">The character class number.</param> /// <returns>The created knight.</returns> protected Character CreateKnight(CharacterClassNumber characterClassNumber) { return(this.CreateCharacter(this.AccountName + "Dk", characterClassNumber, this.Level, 0)); }
private CharacterClass CreateDarkWizard(CharacterClassNumber number, string name, short pointsPerLevelUp, bool isMaster, CharacterClass nextGenerationClass, bool canGetCreated) { var result = this.Context.CreateNew <CharacterClass>(); this.GameConfiguration.CharacterClasses.Add(result); result.CanGetCreated = canGetCreated; result.HomeMap = this.GameConfiguration.Maps.FirstOrDefault(map => map.Number == LorenciaMapId); result.Number = (byte)number; result.Name = name; result.PointsPerLevelUp = pointsPerLevelUp; result.IsMasterClass = isMaster; result.NextGenerationClass = nextGenerationClass; result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.Level, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseStrength, 18, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseAgility, 18, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseVitality, 15, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseEnergy, 30, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentHealth, 60, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentMana, 60, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentAbility, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentShield, 1, false)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalStrength, 1, Stats.BaseStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalAgility, 1, Stats.BaseAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalVitality, 1, Stats.BaseVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalEnergy, 1, Stats.BaseEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseBase, 1.0f / 10, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvm, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvp, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvm, 1.0f / 3, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 0.25f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 2, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 5, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 1.5f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 0.25f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 4, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 3, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.2f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.3f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.4f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.2f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 0.5f, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShieldTemp, 2f, Stats.Level, InputOperator.Exponentiate)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1f / 30f, Stats.MaximumShieldTemp)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 2, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 2, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 1, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 2, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 8, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 4, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1, Stats.MinimumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1, Stats.MaximumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumWizBaseDmg, 1.0f / 9, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumWizBaseDmg, 1.0f / 4, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumGuildSize, 0.1f, Stats.Level)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(30, Stats.MaximumHealth)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.SkillMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(2, Stats.AbilityRecoveryAbsolute)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1.0f / 33f, Stats.AbilityRecoveryMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1.0f / 27.5f, Stats.ManaRecoveryMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(0.01f, Stats.ShieldRecoveryMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.DamageReceiveDecrement)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.AttackDamageIncrease)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.MoneyAmountRate)); return(result); }
private CharacterClass CreateDarkLord(CharacterClassNumber number, string name, bool isMaster, CharacterClass nextGenerationClass, bool canGetCreated) { var energyMinus15 = this.repositoryManager.CreateNew <AttributeDefinition>(Guid.NewGuid(), "TotalEnergy minus 15", "TotalEnergy minus 15"); var result = this.repositoryManager.CreateNew <CharacterClass>(); this.gameConfiguration.CharacterClasses.Add(result); result.CanGetCreated = canGetCreated; result.HomeMap = this.gameConfiguration.Maps.FirstOrDefault(map => map.Number == LorenciaMapId); result.Number = (byte)number; result.Name = name; result.PointsPerLevelUp = 7; result.LevelRequirementByCreation = 250; result.IsMasterClass = isMaster; result.NextGenerationClass = nextGenerationClass; result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.Level, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseStrength, 26, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseAgility, 20, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseVitality, 20, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseEnergy, 15, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.BaseLeadership, 25, true)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentHealth, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentMana, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentAbility, 1, false)); result.StatAttributes.Add(this.CreateStatAttributeDefinition(Stats.CurrentShield, 1, false)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalStrength, 1, Stats.BaseStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalAgility, 1, Stats.BaseAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalVitality, 1, Stats.BaseVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.TotalEnergy, 1, Stats.BaseEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseBase, 1.0f / 7, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvm, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefensePvp, 1, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvm, 1.0f / 7, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 0.5f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.DefenseRatePvp, 2, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 5, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 2.5f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 1.0f / 6, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvm, 1.0f / 10, Stats.TotalLeadership)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 4.0f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AttackRatePvp, 3, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.15f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.1f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.2f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.3f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumAbility, 0.3f, Stats.TotalLeadership)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalAgility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1.2f, Stats.TotalLeadership)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 0.5f, Stats.DefenseBase)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShieldTemp, 2f, Stats.Level, InputOperator.Exponentiate)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumShield, 1f / 30f, Stats.MaximumShieldTemp)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(energyMinus15, -15, Stats.TotalEnergy, InputOperator.Add)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 1.5f, energyMinus15)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumMana, 0.5f, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 2, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumHealth, 3, Stats.TotalVitality)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 7, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 5, Stats.TotalStrength)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1.0f / 14, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1.0f / 10, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MinimumPhysBaseDmg, 1, Stats.MinimumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumPhysBaseDmg, 1, Stats.MaximumPhysBaseDmgByWeapon)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.SkillMultiplier, 0.005f, Stats.TotalEnergy)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.ManaRecovery, 1.0f / 27.5f, Stats.MaximumMana)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.AbilityRecovery, 1.0f / 33f, Stats.MaximumAbility)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumGuildSize, 0.1f, Stats.Level)); result.AttributeCombinations.Add(this.CreateAttributeRelationship(Stats.MaximumGuildSize, 0.1f, Stats.TotalLeadership)); /* TODO: Add these stats * Critical dmg = cmd/25+str/30 * Fireburst bonus min dmg = 100+str/25+ene/50 * Fireburst bonus max dmg = 150+str/25+ene/50 * Horse bonus dmg = 100+horseLvl*10+lvl*2.5+str/10+cmd/5 * Raven speed = 20+(ravenLvl*4)/5+cmd/50 * Raven min dmg = 180+ravenLvl*15+cmd/8 * Raven max dmg = 200+ravenLvl*15+cmd/4 */ result.BaseAttributeValues.Add(this.CreateConstValueAttribute(38, Stats.MaximumMana)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(48.5f, Stats.MaximumHealth)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(2, Stats.SkillMultiplier)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(2, Stats.AbilityRecovery)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.DamageReceiveDecrement)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.AttackDamageIncrease)); result.BaseAttributeValues.Add(this.CreateConstValueAttribute(1, Stats.MoneyAmountRate)); return(result); }