예제 #1
0
    public Thief Thief;                   //!< Player's Thief ability

    public Ability this[AbilityName ability] //!< Convenience property to index abilities by AbilityName enum
    {
        get
        {
            switch (ability)
            {
                case AbilityName.Immunity:
                    return Immunity;
                case AbilityName.TreatsGalore:
                    return TreatsGalore;
                case AbilityName.Fearless:
                    return Fearless;
                case AbilityName.FatMouse:
                    return FatMouse;
                case AbilityName.ScaryCat:
                    return ScaryCat;
                case AbilityName.BeastlyBuffet:
                    return BeastlyBuffet;
                case AbilityName.Thief:
                    return Thief;
                default:
                    throw new ArgumentOutOfRangeException("ability", ability, "No such ability.");
            }
        }
    }
예제 #2
0
 /// <summary>
 /// Method to set a player's ability to a certain level.
 /// </summary>
 /// <param name="ability">Ability to be changed</param>
 /// <param name="level">New level</param>
 public void SetAbility(AbilityName ability, int level)
 {
     switch (ability)
     {
         case AbilityName.Immunity:
             Immunity = new Immunity(level);
             break;
         case AbilityName.TreatsGalore:
             TreatsGalore = new TreatsGalore(level);
             break;
         case AbilityName.Fearless:
             Fearless = new Fearless(level);
             break;
         case AbilityName.FatMouse:
             FatMouse = new FatMouse(level);
             break;
         case AbilityName.ScaryCat:
             ScaryCat = new ScaryCat(level);
             break;
         case AbilityName.BeastlyBuffet:
             BeastlyBuffet = new BeastlyBuffet(level);
             break;
         case AbilityName.Thief:
             Thief = new Thief(level);
             break;
         default:
             throw new ArgumentOutOfRangeException("ability", ability, "No such ability.");
     }
 }
예제 #3
0
        public void UpdateAbilityScoreBaseValue(AbilityName abilityName, int NewValue)
        {
            switch (abilityName)
            {
            case AbilityName.Intelligence:
                IntBase    = NewValue;
                IntBaseMod = GetAbilityModifier(IntBase);
                return;

            case AbilityName.Wisdom:
                WisBase    = NewValue;
                WisBaseMod = GetAbilityModifier(WisBase);
                return;

            case AbilityName.Strength:
                StrBase    = NewValue;
                StrBaseMod = GetAbilityModifier(StrBase);
                return;

            case AbilityName.Dexterity:
                DexBase    = NewValue;
                DexBaseMod = GetAbilityModifier(DexBase);
                return;

            case AbilityName.Charisma:
                ChaBase    = NewValue;
                ChaBaseMod = GetAbilityModifier(ChaBase);
                return;

            case AbilityName.Constitution:
                ConBase    = NewValue;
                ConBaseMod = GetAbilityModifier(ConBase);
                return;
            }
        }
        /// <summary>
        /// Calculates the overall competency score of a player in one particular ability.
        /// The overall score is derived from finding the weighted average subscore in the specific ability.
        /// </summary>
        /// <param name="aName">The ability in question's name.</param>
        /// <returns>The player's overall score in this ability.</returns>
        /// <remarks>The returned score ≥ 0.</remarks>
        public static int CalculateOverallScoreForOneAbility(AbilityName aName)
        {
            int    sumOfWeightedScores = 0;
            double sumOfWeight         = 0.001;

            // Get a list of abilities that are being measured
            List <AbilityName> measuredAbilities = subScoreSeq.Select(s => s.AbilityName).ToList();

            // If aName exists in measuredAbilities
            if (measuredAbilities.Contains(aName))
            {
                // Iterate through subScoreSeq and find the average score for aName
                foreach (var subScore in subScoreSeq)
                {
                    if (subScore.AbilityName == aName)
                    {
                        sumOfWeightedScores += (subScore.Score * subScore.Weight);
                        sumOfWeight         += subScore.Weight;
                    }
                }

                int overallScore = (int)Math.Ceiling(sumOfWeightedScores / sumOfWeight);
                return(overallScore);
            }
            else // aName is not measured; return -1
            {
                return(-1);
            }
        }
예제 #5
0
 public Skill(AbilityName ability, bool armorPenalty, bool untrained, bool hidden = false, bool isClass = false, int rank = 0)
 {
     this.ability      = ability;
     this.armorPenalty = armorPenalty;
     this.untrained    = untrained;
     this.hidden       = hidden;
     this.rank         = rank;
     this.isClass      = isClass;
 }
예제 #6
0
 public Skill(AbilityName ability, bool armorPenalty, bool untrained, bool hidden = false, bool isClass = false, int rank = 0)
 {
     this.ability = ability;
     this.armorPenalty = armorPenalty;
     this.untrained = untrained;
     this.hidden = hidden;
     this.rank = rank;
     this.isClass = isClass;
 }
 public ModifyAbility(
     EffectName name,
     AbilityName abilityToModify,
     AbilityName modifiedAbility,
     IList <Validator>?validators = null) : base(name, $"{nameof(Effect)}.{nameof(ModifyAbility)}", validators ?? new List <Validator>())
 {
     AbilityToModify = abilityToModify;
     ModifiedAbility = modifiedAbility;
 }
    public static void SetAbilityEnabled(AbilityName abilityName, bool enabled)
    {
        if (!abilities.ContainsKey(abilityName))
        {
            Debug.Log("ability " + abilityName + " does not exist");
            return;
        }

        abilities[abilityName].abilityEnabled = enabled;
    }
예제 #9
0
            public IEnumerator WHEN_AbilityNameSet_THEN_AbilityNameGetFunctionWorks()
            {
                testOverallScoreStorage             = new OverallScoreStorage();
                testOverallScoreStorage.AbilityName = AbilityName.VISUOSPATIAL_SKETCHPAD;
                AbilityName expectedAbilityName = AbilityName.VISUOSPATIAL_SKETCHPAD;

                yield return(null);

                Assert.AreEqual(expectedAbilityName, testOverallScoreStorage.AbilityName);
            }
            public IEnumerator WHEN_AbilityNameSet_THEN_NameGetFunctionWorks()
            {
                testSubscoreStorage             = new SubscoreStorage();
                testSubscoreStorage.AbilityName = AbilityName.INHIBITION;
                AbilityName expectedAbilityName = AbilityName.INHIBITION;

                yield return(null);

                Assert.AreEqual(expectedAbilityName, testSubscoreStorage.AbilityName);
            }
예제 #11
0
        /// <summary>
        /// Get the overallScoreStorage object for the specified input ability from the overallScoreSeq.
        /// </summary>
        /// <param name="abilityName"></param>
        /// <returns></returns>
        private OverallScoreStorage GetOverallScoreStorageForOneAbility(AbilityName abilityName)
        {
            OverallScoreStorage result = new OverallScoreStorage();

            foreach (OverallScoreStorage overallScore in overallScoreSeq)
            {
                if (overallScore.AbilityName == abilityName)
                {
                    result = overallScore;
                    break;
                }
            }
            return(result);
        }
예제 #12
0
 private void Start()
 {
     AN       = FindObjectOfType <AbilityName>();
     player   = FindObjectOfType <PlayerStats>();
     settings = FindObjectOfType <Settings>();
     input.onValueChange.AddListener(delegate { ValueChangeCheck(input.text); });
     system = FindObjectOfType <BattleSystem>();
     AB     = FindObjectOfType <AudioBox>();
     AS     = FindObjectOfType <AbilitySelect>();
     if (FindObjectOfType <Settings>())
     {
         autoMode = FindObjectOfType <Settings>().autoMode;
     }
 }
    public static void ConfigAbility(AbilityConfig config)
    {
        AbilityName abilityName = (AbilityName)System.Enum.Parse(typeof(AbilityName), StringOperation.ToFirstUpper(config.abilityName));

        if (!abilities.ContainsKey(abilityName))
        {
            Debug.Log("ability " + abilityName + " does not exist");
            return;
        }

        AbilityBehaviour ability = abilities[abilityName];

        ability.abilityEnabled = config.enabled;
        ability.isChargeMode   = config.isChargeMode;
        ability.chargeCount    = config.chargeCount;
    }
예제 #14
0
 public AbilityDefinition(AbilityName ability, string description, string[] provides, string[] requires) : this()
 {
     this.aname       = ability;
     this.name        = ability.ToString().ToUpperInvariant();
     this.description = description;
     if (provides != null)
     {
         foreach (string provide in provides)
         {
             this.Provide(provide);
         }
     }
     if (requires != null)
     {
         foreach (string require in requires)
         {
             this.Provide(require);
         }
     }
 }
예제 #15
0
    public void SetAbility(AbilityName ab)
    {
        switch (ab)
        {
        case AbilityName.FLAME:
            setActive(0);
            break;

        case AbilityName.GRENADE:
            setActive(1);
            break;

        case AbilityName.KB:
            setActive(2);
            break;

        case AbilityName.RG:
            setActive(3);
            break;
        }
    }
예제 #16
0
 public AbilityDefinition(AbilityName ability, string description, string[] provides, string[] requires)
     : this()
 {
     this.aname = ability;
     this.name = ability.ToString().ToUpperInvariant();
     this.description = description;
     if (provides != null)
     {
         foreach (string provide in provides)
         {
             this.Provide(provide);
         }
     }
     if (requires != null)
     {
         foreach (string require in requires)
         {
             this.Provide(require);
         }
     }
 }
예제 #17
0
        public int GetAbilityScoreBaseValue(AbilityName abilityName)
        {
            switch (abilityName)
            {
            case AbilityName.Intelligence:
                return(IntBase);

            case AbilityName.Wisdom:
                return(WisBase);

            case AbilityName.Strength:
                return(StrBase);

            case AbilityName.Dexterity:
                return(DexBase);

            case AbilityName.Charisma:
                return(ChaBase);

            case AbilityName.Constitution:
                return(ConBase);
            }
            return(-100);
        }
예제 #18
0
        public List <AbilityName> RetrieveSpecificAbilityName(IDbConnection connection, int ability_id)
        {
            List <AbilityName> abilityNames = new List <AbilityName>();

            using (IDbCommand command = database.CreateCommand()) {
                command.Connection  = connection;
                command.CommandText = Query.GetSpecificAbilityName;
                command.Prepare();
                command.AddWithValue("@ability_id", ability_id);
                using (IDataReader reader = command.ExecuteReader()) {
                    while (reader.Read())
                    {
                        AbilityName abilityName = new AbilityName {
                            LocalLanguage = new Language {
                                Id = reader.CheckValue <int>("local_language_id")
                            },
                            Name = reader.CheckObject <string>("name")
                        };
                        abilityNames.Add(abilityName);
                    }
                }
            } // Command
            return(abilityNames);
        }
예제 #19
0
        public int GetAbilityModValue(AbilityName abilityName)
        {
            switch (abilityName)
            {
            case AbilityName.Intelligence:
                return(IntMod);

            case AbilityName.Wisdom:
                return(WisMod);

            case AbilityName.Strength:
                return(StrMod);

            case AbilityName.Dexterity:
                return(DexMod);

            case AbilityName.Charisma:
                return(ChaMod);

            case AbilityName.Constitution:
                return(ConMod);
            }
            return(-100);
        }
예제 #20
0
 public int this[AbilityName abilityName]
 {
     get { return(values[abilityName]); }
     set { values [abilityName] = value; }
 }
예제 #21
0
    /// <summary>
    /// Improves one of the player's abilities. Does nothing if the ability level is already at maximum.
    /// </summary>
    /// <param name="ability"></param>
    public void ImproveAbility(AbilityName ability)
    {
        if (player.PAbilities[ability].Level >= player.PAbilities[ability].MaxLevel) return;
        player.PAbilities.SetAbility(ability, player.PAbilities[ability].Level + 1);
        abilityUi.UpdateAbilityLevelOnButton(ability);
        abilityPoints--;

        NewGameMessage("Improved " + player.PAbilities[ability].Name + "!");
    }
예제 #22
0
 /// <summary>
 /// To be called by the Player script
 /// to activate the ability based on 
 /// the tapped icon
 /// </summary>
 /// <param name="ability"></param>
 public void ActivateAbility(AbilityName ability)
 {
     switch (ability)
     {
         case AbilityName.Immunity:
             ActivateImmunity();
             abilityUi.Countdowns[ability].text = player.PAbilities[AbilityName.Immunity]
                 .Duration.ToString();
             abilityUi.Countdowns[ability].gameObject.SetActive(true);
             break;
         case AbilityName.TreatsGalore:
             ActivateTreatsGalore();
             abilityUi.Countdowns[ability].text = player.PAbilities[AbilityName.TreatsGalore]
 .Duration.ToString();
             abilityUi.Countdowns[ability].gameObject.SetActive(true);
             break;
         case AbilityName.Fearless:
             ActivateFearless();
             abilityUi.Countdowns[ability].text = player.PAbilities[AbilityName.Fearless]
 .Duration.ToString();
             abilityUi.Countdowns[ability].gameObject.SetActive(true);
             break;
         case AbilityName.FatMouse:
             ActivateFatMouse();
             abilityUi.Countdowns[ability].text = player.PAbilities[AbilityName.FatMouse]
 .Duration.ToString();
             abilityUi.Countdowns[ability].gameObject.SetActive(true);
             break;
         case AbilityName.ScaryCat:
             ActivateScaryCat();
             break;
         case AbilityName.BeastlyBuffet:
             ActivateBeastlyBuffet();
             break;
         case AbilityName.Thief:
             ActivateThief();
             abilityUi.Countdowns[ability].text = player.PAbilities[AbilityName.Thief]
 .Duration.ToString();
             abilityUi.Countdowns[ability].gameObject.SetActive(true);
             break;
         default:
             throw new ArgumentOutOfRangeException("ability", ability, null);
     }
 }
예제 #23
0
 // Function to check if an ability is still active using the specified duration.
 private bool IsStillActive(AbilityName ability, int duration)
 {
     if (abilityLastActivatedTimes.ContainsKey(ability))
     {
         var timeSinceLastActivation = DateTime.Now.Subtract(abilityLastActivatedTimes[ability]).Seconds;
         return timeSinceLastActivation < duration;
     }
     else return false;
 }
예제 #24
0
 /// <summary>
 /// Remove an ability from the player's list
 /// </summary>
 /// <param name="ability"></param>
 public void removeAbility(AbilityName ability)
 {
     if (PAbilities[ability].Level > 0)
         PAbilities.SetAbility(ability, 0);
     else
         Debug.LogWarning("PLayer doesn't have the ability you are trying to remvoe");
 }
예제 #25
0
 public int this[AbilityName abilityName]
 {
     get { return values[abilityName]; }
     set { values [abilityName] = value; }
 }
예제 #26
0
    private void InstantiateButton(float yOffset, AbilityName ability)
    {
        var button = Instantiate(abilityButtonPrefab) as GameObject;

        // Set sprite, parent object and rectTransform anchors
        button.GetComponent<Image>().sprite = abilitySpritesDict[ability];
        button.transform.SetParent(canvas.transform, false);
        RectTransform buttonRectTransform = button.GetComponent<RectTransform>();

        Vector2 pos = buttonRectTransform.anchoredPosition;
        buttonRectTransform.anchoredPosition = new Vector2(pos.x, pos.y - yOffset);

        button.GetComponentInChildren<Text>().text = localPlayer.PAbilities[ability].Level.ToString();
        button.GetComponent<Button>().onClick.AddListener(() => abilityController.ActivateAbility(ability));

        var plusButton = button.transform.Find("PlusButton").gameObject;
        plusButton.GetComponent<Button>().onClick.AddListener(() => abilityController.ImproveAbility(ability));

        AbilityButtons[ability] = button;
        abilityUpgradeButtons[ability] = plusButton;
    }
예제 #27
0
    public void Update()
    {
        if (DevMode.devMode)
        {
            curHealCooldown           = 0;
            curEnhancedDashCooldown   = 0;
            curPlayerEnchanceCooldown = 0;
            curTimeStopCooldown       = 0;
        }

        CheckCooldown();
        //Player Color Change
        if (Input.GetButtonDown("NextAbility"))
        {
            if ((int)curAbility == (int)AbilityName.PlayerHeal)
            {
                curAbility = AbilityName.PlayerEnhancedDash;
            }
            else
            {
                curAbility++;
            }
        }
        if (Input.GetButtonDown("PrevAbility"))
        {
            if (curAbility == (int)AbilityName.PlayerEnhancedDash)
            {
                curAbility = AbilityName.PlayerHeal;
            }
            else
            {
                curAbility--;
            }
        }
        switch (curAbility)
        {
        case AbilityName.PlayerEnhancedDash:
            GameManager.instance.uiMan.BorderReset();
            GameManager.instance.uiMan.playerDashBorder.enabled = true;
            break;

        case AbilityName.PlayerEnhance:
            GameManager.instance.uiMan.BorderReset();
            GameManager.instance.uiMan.playerEnhanceBorder.enabled = true;
            break;

        case AbilityName.PlayerHeal:
            GameManager.instance.uiMan.BorderReset();
            GameManager.instance.uiMan.playerHealBorder.enabled = true;
            break;
        }
        //Actual Ability
        if (Input.GetButtonDown("Fire3"))
        {
            switch (curAbility)
            {
            case AbilityName.PlayerEnhancedDash:
                EnhancedDash();
                break;

            case AbilityName.PlayerEnhance:
                PlayerEnhance();
                break;

            case AbilityName.PlayerHeal:
                PlayerHeal();
                break;
            }
        }
    }
예제 #28
0
파일: Map.cs 프로젝트: CSF-VSU/SpacePewPew
 private AbilityResult PerformAbility(AbilityName ability, Ship invokator)
 {
     var coords = GetShipCoordinates(invokator);
     return _abilities[ability].Perform(this, coords);
 }
예제 #29
0
 public bool IsActive(AbilityName ability)
 {
     switch (ability)
     {
         case AbilityName.Immunity:
             return mouseIsImmune;
         case AbilityName.TreatsGalore:
             return treatsGaloreIsActive;
         case AbilityName.Fearless:
             return mouseIsFearless;
         case AbilityName.FatMouse:
             return mouseIsFat;
         case AbilityName.ScaryCat:
             return false;
         case AbilityName.BeastlyBuffet:
             return beastlyBuffetIsActive;
         case AbilityName.Thief:
             return mouseIsThief;
         default:
             throw new ArgumentOutOfRangeException("ability", ability, null);
     }
 }
예제 #30
0
 /// <summary>
 /// Add an ability to the player's list
 /// </summary>
 /// <param name="ability"></param>
 public void addAbility(AbilityName ability)
 {
     if (PAbilities[ability].Level == 0)
         PAbilities.SetAbility(ability, 1);
     else
         Debug.LogWarning("Player already has an ability that you are trying to add");
 }
예제 #31
0
 private int TimeLeft(AbilityName ability)
 {
     if (abilityLastActivatedTimes.ContainsKey(ability))
     {
         var timeSinceLastActivation = DateTime.Now.Subtract(abilityLastActivatedTimes[ability]).Seconds;
         return player.PAbilities[ability].Duration - timeSinceLastActivation;
     }
     else return -1;
 }
예제 #32
0
 /// <summary>
 /// Checks if player has the ability indicated
 /// </summary>
 /// <param name="ability"></param>
 /// <returns></returns>
 public bool hasAbility(AbilityName ability)
 {
     if (PAbilities[ability].Level > 0)
         return true;
     return false;
 }
예제 #33
0
 public AbilityAdjustment(AbilityName abilityName, int adjustment)
 {
     this.AbilityName = abilityName;
     this.Adjustment  = adjustment;
 }
예제 #34
0
 public bool CheckIfMaxed(AbilityName ability)
 {
     return abilityController.player.PAbilities[ability].Level == abilityController.player.PAbilities[ability].MaxLevel;
 }
    /// <summary>
    /// Callback when ability icons are clicked
    /// </summary>
    public void OnAbilityDetail()
    {
        audio.PlayOneShot(SoundButton);
        // Get selected ability
        GameObject selectedAbilityObj = EventSystem.current.currentSelectedGameObject;
        selectedAbility = (AbilityName)Enum.Parse(typeof(AbilityName), selectedAbilityObj.name);

        // Check if player already has selecte ability and set choose ability button sprite
    if (player.hasAbility(selectedAbility))
        {
            alreadyChosenText.SetActive(false);
            chooseAbilityButton.gameObject.SetActive(true);
            (chooseAbilityButton.targetGraphic as Image).sprite = cancelSelectionSprite;
        }
        else
        {
            // Check if player already has two abilities and disable choose ability button
            if (player.getAbilities().Count == 2)
            {
                alreadyChosenText.SetActive(true);
                chooseAbilityButton.gameObject.SetActive(false);
            }
            else
            {
                alreadyChosenText.SetActive(false);
                chooseAbilityButton.gameObject.SetActive(true);
            }

            (chooseAbilityButton.targetGraphic as Image).sprite = confirmSelectionSprite;
        }

        // Change UI
        introText.SetActive(false);
        abilityIconUI.SetActive(false);
        readyButtonObject.SetActive(false);

        // Set detail UI to selected ability
        selectedAbilityIcon.sprite = abilityIconSpritesDict[selectedAbility];
        selectedAbilityTitle.text = abilityTitles[selectedAbility];
        selectedAbilityDescription.text = abilityDescription[selectedAbility];

        selectedAbilityLevelHeader.text = abilityLevelDetails[selectedAbility][0].level;
        selectedAbilityLevelHappiness.text = abilityLevelDetails[selectedAbility][0].happiness;
        selectedAbilityLevelDuration.text = abilityLevelDetails[selectedAbility][0].duration;
        selectedAbilityLevelDetail.text = abilityLevelDetails[selectedAbility][0].description;

        currentLevelIndex = 0;

        abilityDetailUI.SetActive(true);

    }
예제 #36
0
 public void UpdateAbilityLevelOnButton(AbilityName abilityName)
 {
     AbilityButtons[abilityName].GetComponentInChildren<Text>().text = localPlayer.PAbilities[abilityName].Level.ToString();
 }
예제 #37
0
        /// <summary>
        /// Saves the Ability object.
        /// </summary>
        /// <returns>Ability Object</returns>
        public Ability SaveAbility()
        {
            SqlDataReader      result;
            DatabaseConnection dbconn     = new DatabaseConnection();
            SqlCommand         command    = new SqlCommand();
            SqlConnection      connection = new SqlConnection(dbconn.SQLSEVERConnString);

            try
            {
                connection.Open();
                command.Connection  = connection;
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "InsertUpdate_Ability";
                command.Parameters.Add(dbconn.GenerateParameterObj("@AbilityID", SqlDbType.Int, AbilityID.ToString(), 0));
                command.Parameters.Add(dbconn.GenerateParameterObj("@AbilityName", SqlDbType.VarChar, AbilityName.ToString(), 100));
                command.Parameters.Add(dbconn.GenerateParameterObj("@SortOrder", SqlDbType.Int, SortOrder.ToString(), 0));
                result = command.ExecuteReader();

                result.Read();
                SetReaderToObject(ref result);
            }
            catch
            {
                Exception e = new Exception();
                this._insertUpdateOK = false;
                this._insertUpdateMessage.Append(e.Message.ToString());
                throw e;
            }
            finally
            {
                command.Dispose();
                connection.Close();
            }
            return(this);
        }