Esempio n. 1
0
 public CharStats(int level, int totalHP, int totalTP, int currentHP, int currentTP, int exp, int defense, int dmg, float dmgModifier, float chanceToHit, ICharacterClass charClass)
 {
     this.level = level;
     this.totalHP = totalHP;
     this.totalTP = totalTP;
     this.currentHP = currentHP;
     this.currentTP = currentTP;
     this.exp = exp;
     this.defense = defense;
     this.dmg = dmg;
     this.dmgModifier = dmgModifier;
     this.chanceToHit = chanceToHit;
     this.charClass = charClass;
 }
Esempio n. 2
0
        /// <summary>
        /// Called to promote a player
        /// </summary>
        /// <param name="player">the player to promote</param>
        /// <param name="classid">the new classid</param>
        /// <param name="messageToPlayer">the message for the player</param>
        /// <param name="gifts">Array of inventory items as promotion gifts</param>
        /// <returns>true if successfull</returns>
        public bool PromotePlayer(GamePlayer player, int classid, string messageToPlayer, InventoryItem[] gifts)
        {
            if (player == null)
            {
                return(false);
            }

            ICharacterClass oldClass = player.CharacterClass;

            // Player was promoted
            if (player.SetCharacterClass(classid))
            {
                player.RemoveAllStyles();

                if (messageToPlayer != "")
                {
                    player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Says", this.Name, messageToPlayer), eChatType.CT_System, eChatLoc.CL_PopupWindow);
                }
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Upgraded", player.CharacterClass.Name), eChatType.CT_Important, eChatLoc.CL_SystemWindow);

                player.CharacterClass.OnLevelUp(player, player.Level);
                player.RefreshSpecDependantSkills(true);
                player.StartPowerRegeneration();
                //player.Out.SendUpdatePlayerSpells();
                player.Out.SendUpdatePlayerSkills();
                player.Out.SendUpdatePlayer();

                // Initiate equipment
                if (gifts != null && gifts.Length > 0)
                {
                    for (int i = 0; i < gifts.Length; i++)
                    {
                        player.ReceiveItem(this, gifts[i]);
                    }
                }

                // after gifts
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Accepted", player.CharacterClass.Profession), eChatType.CT_Important, eChatLoc.CL_SystemWindow);

                Notify(GameTrainerEvent.PlayerPromoted, this, new PlayerPromotedEventArgs(player, oldClass));

                player.SaveIntoDatabase();
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        public Color GetColor(ICharacterClass characterClass)
        {
            switch (characterClass)
            {
            case Hoarder h:
                return(Color.LawnGreen);

            case Speedy s:
                return(Color.LightBlue);

            case Brute b:
                return(Color.DarkRed);

            case DefaultClass d:
            default:
                return(Color.Black);
            }
        }
Esempio n. 4
0
        public Stats(ICharacterClass clazz)
        {
            stats = new List <StatSet> {
                new StatSet {
                    Key = "MaxHealth", Value = 0
                },
                new StatSet {
                    Key = "CurrentHealth", Value = 0
                },
                new StatSet {
                    Key = "MaxMagicPoints", Value = 0
                },
                new StatSet {
                    Key = "CurrentMagicPoints", Value = 0
                },

                new StatSet {
                    Key = "Attack", Value = 0
                },
                new StatSet {
                    Key = "Magic", Value = 0
                },
                new StatSet {
                    Key = "Defense", Value = 0
                },
                new StatSet {
                    Key = "Velocity", Value = 0
                },
                new StatSet {
                    Key = "XPToNextLevel", Value = 0
                },
                new StatSet {
                    Key = "CurrentXP", Value = 0
                },
                new StatSet {
                    Key = "Level", Value = 0
                }
            };

            this.clazz = clazz;

            UnityEngine.Debug.Log(clazz);
            this.clazz?.CalculateStats(1, this);
        }
Esempio n. 5
0
        public Player(string name, int positionX, int positionY, int points, ICharacterClass characterClass, Bottle bottle, PictureBox playerObject)
        {
            Name                = name;
            PositionX           = positionX;
            PositionY           = positionY;
            Points              = points;
            Bottle              = bottle;
            this.PlayerObject   = playerObject;
            this.CharacterClass = characterClass;
            Color               = new PlayerColor(characterClass);

            //Gets stats from player characterClass
            PlayerStats stats = characterClass.GetStats();

            HealthPoints = stats.HealthPoints;
            Damage       = stats.Damage;
            Color2       = stats.Color;
            Speed        = stats.Speed;
            PointsBoost  = stats.PointsBoost;
        }
        public static void TakeDamage(this ICharacterClass characterClass, float damage)
        {
            if (characterClass.CheckIfDead() == false)
            {
                if (characterClass.CheckIfContainsCondition <DamageReduction>())
                {
                    Debug.Log("Hitting player on Damage reduction");
                }

                characterClass.SetCurrentHealth(characterClass.GetCurrentHealth() - damage);

                if (characterClass.CheckIfDead())
                {
                    if (OnPlayerDeath != null)
                    {
                        OnPlayerDeath.Invoke(characterClass);
                    }
                }

                characterClass.GetStatusBarManager().PerformValueChangeTextEffectWithColor(damage, StateValueChangeAction.TakingDamage);
            }
        }
Esempio n. 7
0
 private void Awake()
 {
     playerTransform         = GetComponentInParent <Transform>();
     characterClass          = GetComponentInParent <ICharacterClass>();
     changeValueTextAnimator = GetComponentInChildren <Animator>();
 }
Esempio n. 8
0
        public static string GetTooltip(ICharacterClass characterClass)
        {
            IPlayerClass asPlayerClass = characterClass as IPlayerClass;

            StringBuilder sb = new StringBuilder(50);

            if (!string.IsNullOrWhiteSpace(characterClass.Desc))
            {
                sb.Append("\"").Append(characterClass.Desc).AppendLine("\"");
            }
            if (asPlayerClass != null)
            {
                if (asPlayerClass.WeaponProficiency != WeaponType.Invalid)
                {
                    sb.AppendLine("Weapon Proficiencies: ");
                    bool any = false;
                    sb.Append("   ");
                    foreach (WeaponType weaponType in Enum.GetValues(typeof(WeaponType)))
                    {
                        if (weaponType == WeaponType.Invalid)
                        {
                            continue;
                        }
                        if (asPlayerClass.WeaponProficiency.HasFlag(weaponType))
                        {
                            if (any)
                            {
                                sb.Append(" | ");
                            }
                            any = true;
                            sb.Append(weaponType);
                        }
                    }
                    sb.AppendLine();
                }
                if (asPlayerClass.ArmorProficiency != ArmorType.Invalid)
                {
                    sb.AppendLine("Armor Proficiencies: ");
                    bool any = false;
                    sb.Append("   ");
                    foreach (ArmorType armorType in Enum.GetValues(typeof(ArmorType)))
                    {
                        if (armorType == ArmorType.Invalid)
                        {
                            continue;
                        }
                        if (asPlayerClass.ArmorProficiency.HasFlag(armorType))
                        {
                            if (any)
                            {
                                sb.Append(" | ");
                            }
                            any = true;
                            sb.Append(armorType);
                        }
                    }
                    sb.AppendLine();
                }
            }
            if (characterClass.IntrinsicDamageModification.Count > 0)
            {
                sb.AppendLine("Damage Modifiers: ");
                foreach (var dmgModKvp in characterClass.IntrinsicDamageModification)
                {
                    sb.Append("   ").Append(dmgModKvp.Key).Append(": ").Append(dmgModKvp.Value).AppendLine("%");
                }
            }
            if (characterClass.AbilitiesPerLevel.Count > 0)
            {
                sb.AppendLine("Learned Abilities: ");
                foreach (var abilitiesForLevel in characterClass.AbilitiesPerLevel)
                {
                    uint level = abilitiesForLevel.Key;
                    foreach (var ability in abilitiesForLevel.Value)
                    {
                        sb.Append("   [Lvl ").Append(level).Append("] ").AppendLine(ability.Name);
                    }
                }
            }
            return(sb.ToString());
        }
 private void PlayerStatisticManager_OnPlayerDeath(ICharacterClass characterClass)
 {
     HandlePlayerDeath(characterClass);
 }
 internal static void TranslatePossitionWithEffect(ICharacterClass characterClass, IAbility ability)
 {
     throw new NotImplementedException();
 }
Esempio n. 11
0
		/// <summary>
		/// Constructs a new PlayerPromoted event argument class
		/// </summary>
		/// <param name="player">the player that was promoted</param>
		/// <param name="oldClass">the player old class</param>
		public PlayerPromotedEventArgs(GamePlayer player, ICharacterClass oldClass)
		{
			this.player = player;
			this.oldClass = oldClass;
		}
Esempio n. 12
0
 private void Awake()
 {
     characterClass     = GetComponent <ICharacterClass>();
     errorMessageWindow = GameObject.FindGameObjectWithTag("GUI").GetComponentInChildren <ErrorMessageWindow>();
     spellBar           = GameObject.FindGameObjectWithTag("GUI").GetComponentInChildren <SpellBar>();
 }
 private void DisablePlayerPhysic(ICharacterClass characterClass)
 {
     characterClass.PlayerClassManager.GetComponent <Rigidbody>().detectCollisions = false;
 }
 public static bool CheckIfEnoughMana(this ICharacterClass characterClass, IAbility ability)
 {
     return(characterClass.GetCurrentMana() < ability.ManaCost);
 }
 public static void HealthRegeneration(this ICharacterClass characterClass)
 {
     TakeHealing(characterClass, characterClass.GetHealthRegeneration());
     characterClass.GetStatusBarManager().PerformValueChangeTextEffectWithColor(characterClass.GetHealthRegeneration(), StateValueChangeAction.TakingHealing);
 }
 public static bool CheckIfDead(this ICharacterClass characterClass)
 {
     return(characterClass.GetCurrentHealth() <= default(float));
 }
 public static void StaminaRegeneration(this ICharacterClass characterClass)
 {
     AddStamina(characterClass, characterClass.GetStaminaRegeneration());
     characterClass.GetStatusBarManager().PerformValueChangeTextEffectWithColor(characterClass.GetStaminaRegeneration(), StateValueChangeAction.ChangeStamina);
 }
Esempio n. 18
0
 public CharacterSheet(ICharacterClass characterClass, ICharacterRace race, IAttributeSet attributeSet)
 {
     _characterClass = characterClass;
     _race           = race;
     _attributeSet   = attributeSet;
 }
 private void Awake()
 {
     characterClass = GetComponent <ICharacterClass>();
 }
Esempio n. 20
0
 private static GamePlayer NewPlayer(ICharacterClass charClass)
 {
     return(GamePlayer.CreateTestableGamePlayer(charClass));
 }
Esempio n. 21
0
 public void SetCharacterClass(ICharacterClass characterClass)
 {
     CharacterClass = characterClass;
 }
 private void Awake()
 {
     characterClass = GetComponent <ICharacterClass>();
     AttachRequiredPlayerScripts();
 }
        /// <summary>
        /// Check if a Character Needs update based to packet data
        /// </summary>
        /// <param name="pdata">packet data</param>
        /// <param name="client">client</param>
        /// <param name="character">db character</param>
        /// <returns>True if character need refreshment false if no refresh needed.</returns>
        private bool CheckCharacterForUpdates(CreationCharacterData pdata, GameClient client, DOLCharacters character)
        {
            int newModel = character.CurrentModel;

            if (pdata.CustomMode == 1 || pdata.CustomMode == 2 || pdata.CustomMode == 3)
            {
                bool flagChangedStats = false;

                if (Properties.ALLOW_CUSTOMIZE_FACE_AFTER_CREATION)
                {
                    character.EyeSize   = (byte)pdata.EyeSize;
                    character.LipSize   = (byte)pdata.LipSize;
                    character.EyeColor  = (byte)pdata.EyeColor;
                    character.HairColor = (byte)pdata.HairColor;
                    character.FaceType  = (byte)pdata.FaceType;
                    character.HairStyle = (byte)pdata.HairStyle;
                    character.MoodType  = (byte)pdata.MoodType;
                }

                if (pdata.CustomMode != 3 && client.Version >= GameClient.eClientVersion.Version189)
                {
                    var stats = new Dictionary <eStat, int>();
                    stats[eStat.STR] = pdata.Strength;                  // Strength
                    stats[eStat.DEX] = pdata.Dexterity;                 // Dexterity
                    stats[eStat.CON] = pdata.NewConstitution;           // New Constitution
                    stats[eStat.QUI] = pdata.Quickness;                 // Quickness
                    stats[eStat.INT] = pdata.Intelligence;              // Intelligence
                    stats[eStat.PIE] = pdata.Piety;                     // Piety
                    stats[eStat.EMP] = pdata.Empathy;                   // Empathy
                    stats[eStat.CHR] = pdata.Charisma;                  // Charisma

                    // check for changed stats.
                    flagChangedStats |= stats[eStat.STR] != character.Strength;
                    flagChangedStats |= stats[eStat.CON] != character.Constitution;
                    flagChangedStats |= stats[eStat.DEX] != character.Dexterity;
                    flagChangedStats |= stats[eStat.QUI] != character.Quickness;
                    flagChangedStats |= stats[eStat.INT] != character.Intelligence;
                    flagChangedStats |= stats[eStat.PIE] != character.Piety;
                    flagChangedStats |= stats[eStat.EMP] != character.Empathy;
                    flagChangedStats |= stats[eStat.CHR] != character.Charisma;

                    if (flagChangedStats)
                    {
                        ICharacterClass charClass = ScriptMgr.FindCharacterClass(character.Class);

                        if (charClass != null)
                        {
                            int  points;
                            bool valid = IsCustomPointsDistributionValid(character, stats, out points);

                            // Hacking attemp ?
                            if (points > MAX_STARTING_BONUS_POINTS)
                            {
                                if ((ePrivLevel)client.Account.PrivLevel == ePrivLevel.Player)
                                {
                                    if (ServerProperties.Properties.BAN_HACKERS)
                                    {
                                        client.BanAccount(string.Format("Autoban Hack char update : Wrong allowed points:{0}", points));
                                    }

                                    client.Disconnect();
                                    return(false);
                                }
                            }

                            // Error in setting points
                            if (!valid)
                            {
                                return(true);
                            }

                            if (Properties.ALLOW_CUSTOMIZE_STATS_AFTER_CREATION)
                            {
                                // Set Stats, valid is ok.
                                character.Strength     = stats[eStat.STR];
                                character.Constitution = stats[eStat.CON];
                                character.Dexterity    = stats[eStat.DEX];
                                character.Quickness    = stats[eStat.QUI];
                                character.Intelligence = stats[eStat.INT];
                                character.Piety        = stats[eStat.PIE];
                                character.Empathy      = stats[eStat.EMP];
                                character.Charisma     = stats[eStat.CHR];

                                if (log.IsInfoEnabled)
                                {
                                    log.InfoFormat("Character {0} Stats updated in cache!", character.Name);
                                }

                                if (client.Player != null)
                                {
                                    foreach (var stat in stats.Keys)
                                    {
                                        client.Player.ChangeBaseStat(stat, (short)(stats[stat] - client.Player.GetBaseStat(stat)));
                                    }

                                    if (log.IsInfoEnabled)
                                    {
                                        log.InfoFormat("Character {0} Player Stats updated in cache!", character.Name);
                                    }
                                }
                            }
                        }
                        else if (log.IsErrorEnabled)
                        {
                            log.ErrorFormat("No CharacterClass with ID {0} found", character.Class);
                        }
                    }
                }


                if (pdata.CustomMode == 2)                 // change player customization
                {
                    if (client.Account.PrivLevel == 1 && ((pdata.CreationModel >> 11) & 3) == 0)
                    {
                        if (ServerProperties.Properties.BAN_HACKERS)                         // Player size must be > 0 (from 1 to 3)
                        {
                            client.BanAccount(string.Format("Autoban Hack char update : zero character size in model:{0}", newModel));
                            client.Disconnect();
                            return(false);
                        }
                        return(true);
                    }

                    character.CustomisationStep = 2;                     // disable config button

                    if (Properties.ALLOW_CUSTOMIZE_FACE_AFTER_CREATION)
                    {
                        if (pdata.CreationModel != character.CreationModel)
                        {
                            character.CurrentModel = newModel;
                        }

                        if (log.IsInfoEnabled)
                        {
                            log.InfoFormat("Character {0} face properties configured by account {1}!", character.Name, client.Account.Name);
                        }
                    }
                }
                else if (pdata.CustomMode == 3)                 //auto config -- seems someone thinks this is not possible?
                {
                    character.CustomisationStep = 3;            // enable config button to player
                }

                //Save the character in the database
                GameServer.Database.SaveObject(character);
            }

            return(false);
        }
 internal void DispelConditionEffect(ICharacterClass characterClass, ICondition condition)
 {
     characterClass.RemoveConditionEffect(condition);
 }
Esempio n. 25
0
 public EnemyDefinition(string artName, RarityCategory rarity, NameGenerator nameGenerator, ICharacterClass characterClass)
 {
     ArtName        = artName;
     Rarity         = rarity;
     NameGenerator  = nameGenerator;
     CharacterClass = characterClass;
     Id             = characterClass.Id;
 }
Esempio n. 26
0
 public PlayerDefaultColor(ICharacterClass characterClass)
 {
     _characterClass = characterClass;
 }
 /// <summary>
 /// Constructs a new PlayerPromoted event argument class
 /// </summary>
 /// <param name="player">the player that was promoted</param>
 /// <param name="oldClass">the player old class</param>
 public PlayerPromotedEventArgs(GamePlayer player, ICharacterClass oldClass)
 {
     this.player   = player;
     this.oldClass = oldClass;
 }
Esempio n. 28
0
 private void Awake()
 {
     playerRigidbody = GetComponent <Rigidbody>();
     characterClass  = GetComponent <ICharacterClass>();
     groundLayerMask = LayerMask.GetMask("Ground");
 }
Esempio n. 29
0
 public PlayerColor(ICharacterClass characterClass) : base(characterClass)
 {
     _colorData = new ColorData();
 }
Esempio n. 30
0
 private void Start()
 {
     characterClass   = GetComponent <ICharacterClass>();
     abilitiesManager = GetComponent <AbilitiesPerformanceManager>();
 }
 public void setClassDecision(ICharacterClass adventureClass)
 {
     classReason = adventureClass.setReason();
 }