Exemplo n.º 1
0
        /// <summary>
        /// 属性配置優先順を取得
        /// </summary>
        /// <param name="member_order"></param>
        /// <returns></returns>
        public CostInfo[] getElementOrder(PanelInfo panel_info, GlobalDefine.PartyCharaIndex[] member_order)
        {
            List <CostInfo> cost_info_order = new List <CostInfo>();

            // 復活があるときは回復を最優先で置く
            if (m_IsTryResurrect)
            {
                int sp = BattleParam.m_PlayerParty.GetSP();
                if (sp > 0)
                {
                    CharaOnce[] dead_charas = BattleParam.m_PlayerParty.getPartyMembers(CharaParty.CharaCondition.DEAD);
                    if (dead_charas.Length > 0)
                    {
                        for (int field_idx = 0; field_idx < panel_info.m_IsBoosts.Length; field_idx++)
                        {
                            if (panel_info.m_IsBoosts[field_idx])
                            {
                                cost_info_order.Add(new CostInfo(MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL));
                                break;
                            }
                        }
                    }
                }
            }

            // メインユニットのLEADER,MOB_1,MOB2,MOB3,FRIEND,リンクユニットのLEADER,MOB_1,MOB2,MOB3,FRIENDの順に並べる
            for (int skill_idx = 0; skill_idx < m_SkillCosts.GetLength(2); skill_idx++)
            {
                for (int link_idx = 0; link_idx < m_SkillCosts.GetLength(0); link_idx++)
                {
                    for (int member_idx = 0; member_idx < member_order.Length; member_idx++)
                    {
                        GlobalDefine.PartyCharaIndex member_type = member_order[member_idx];
                        SkillCost skill_cost = m_SkillCosts[link_idx, (int)member_type, skill_idx];
                        if (skill_cost != null &&
                            skill_cost.m_CostInfo != null
                            )
                        {
                            bool is_enable_skill = true;
                            {
                                CharaOnce chara_once = BattleParam.m_PlayerParty.getPartyMember(member_type, CharaParty.CharaCondition.ALIVE);
                                if (chara_once == null)
                                {
                                    is_enable_skill = false;
                                }
                            }

                            if (is_enable_skill)
                            {
                                cost_info_order.Add(skill_cost.m_CostInfo);
                            }
                        }
                    }
                }
            }

            CostInfo[] ret_val = cost_info_order.ToArray();

            return(ret_val);
        }
Exemplo n.º 2
0
 public void ChaangeType(SkillCost cost)
 {
     if (changeType)
     {
         ((SkillCostStat)cost).type = typeToChagneToo;
     }
 }
Exemplo n.º 3
0
        public string CostString()
        {
            string Cost = "";

            cCharacterSkillCost[] cDefaultArray = SkillCost.Where(x => x.isDefaultPool).ToArray();
            foreach (cCharacterSkillCost cDefault in cDefaultArray)
            {
                Cost = cDefault.CPCostPaid.ToString();
                if (SkillCost.Count > 1)
                {
                    Cost = cDefault.PoolDescription + ":" + Cost;
                }
            }

            cCharacterSkillCost[] cOtherArray = SkillCost.Where(x => !x.isDefaultPool).ToArray();
            foreach (cCharacterSkillCost cOther in cOtherArray)
            {
                if (Cost.Length > 0)
                {
                    Cost += "; ";
                }
                Cost += cOther.PoolDescription + ":" + cOther.CPCostPaid;
            }
            return(Cost);
        }
Exemplo n.º 4
0
        public async Task <ActionResult> Create(SkillsFormViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }
            var       elements   = GetElements();
            var       skillCosts = GetSkillCosts();
            SkillCost skillCost  = _context.SkillCosts.FirstOrDefault(x => x.Id.ToString() == viewModel.SelectedCost);
            var       costAmount = skillCost.Resource == "hp" ? skillCost.Amount + " %" + skillCost.Resource : (skillCost.Resource == "sp" ?
                                                                                                                skillCost.Amount + skillCost.Resource : skillCost.Amount);
            var skills = new Skills
            {
                SkillName   = viewModel.SkillName,
                Effect      = viewModel.Effect,
                Cost        = _context.SkillCosts.FirstOrDefault(c => c.Id.ToString() == viewModel.SelectedCost),
                CostAmount  = skillCost.Amount + skillCost.Resource,
                Power       = viewModel.Power,
                Element     = _context.PersonaElements.FirstOrDefault(e => e.Name.ToString() == viewModel.SelectedElement),
                ElementName = viewModel.SelectedElement
            };

            _context.PersonaSkills.Add(skills);
            await _context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Exemplo n.º 5
0
 private Skill(uint skillID, string skillName, SkillType type, SkillProperty property, SkillCost cost, string desc)
 {
     SkillID     = skillID;
     SkillName   = skillName;
     SkillType   = type;
     Property    = property;
     Cost        = cost;
     Description = desc;
 }
Exemplo n.º 6
0
    public override void Modify(SkillCost cost, StatTypes typeToChange)
    {
        if (cost is SkillCostStat)
        {
            SkillCostStat stat = cost as SkillCostStat;

            if (stat.type == typeToChange)
            {
                stat.cost = Mathf.RoundToInt(stat.cost * multipler);
            }
        }
    }
Exemplo n.º 7
0
    public override void Modify(SkillCost cost, StatTypes typeToChange)
    {
        if (cost is SkillCostStat)
        {
            SkillCostStat stat = cost as SkillCostStat;

            if (stat.type == typeToChange)
            {
                stat.cost = setTo;
            }
        }
    }
Exemplo n.º 8
0
 public void SetUp(Character character)
 {
     this.No        = character.No;
     this.Name      = character.Name;
     this.Type      = character.Type;
     this.Att       = character.Att;
     image.color    = manaIcon.ColorImage(ToAttribute(Att));
     this.Hp        = character.Hp;
     this.Atk       = character.Atk;
     this.Rec       = character.Rec;
     this.Skill     = character.Skill;
     this.SkillCost = character.SkillCost;
     mananum.text   = SkillCost.ToString();
     this.refR      = character.refR;
     this.refW      = character.refW;
     this.refL      = character.refL;
     this.refS      = character.refS;
     this.refD      = character.refD;
 }
Exemplo n.º 9
0
        public static void StartUp(TestContext ctx)
        {
            Definer.Instance().Engine     = Engine;
            DamageTypeTemplate trueDamage = new DamageTypeTemplate(Engine, null, null, null, null);

            trueDamage.Name = "true";
            trueDamage.Key  = "T";
            Engine.AddDamageType(trueDamage);
            ResourceTemplate res = new ResourceTemplate()
            {
                Key = "MP"
            };
            SkillCost nullCost = new SkillCost(res, TreeConverter.Build("0", Engine));

            _testSkill      = new SkillTemplate();
            _testSkill.Type = SkillType.Cast;
            _testSkill.Key  = "TEST_CAST";
            SkillLevelTemplate testLevelTemplate = new SkillLevelTemplate();

            testLevelTemplate.Cooldown      = TreeConverter.Build("3", Engine);
            testLevelTemplate.Duration      = TreeConverter.Build($"{LConstants.SourceKeyword}{LConstants.PROP_OP}INT", Engine);
            testLevelTemplate.Interruptible = TreeConverter.Build("true", Engine);
            testLevelTemplate.Formulas.Add(TreeConverter.Build($"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10)", Engine));
            testLevelTemplate.PushBack = TreeConverter.Build("true", Engine);
            testLevelTemplate.Cost     = nullCost;
            _testSkill.ByLevel.Add(testLevelTemplate);

            Engine.GetSkillManager().AddSkill(_testSkill);

            BaseObject bDmg = new BaseObject()
            {
                Description = "", Key = "BASE_DMG", Name = "Base damage"
            };

            Engine.GetPropertyManager().BaseValues.Add("BASE_DMG", bDmg);

            BaseObject intellect = new BaseObject()
            {
                Description = "", Key = "INT", Name = "Intellect"
            };

            Engine.GetPropertyManager().Attributes.Add("INT", intellect);
        }
Exemplo n.º 10
0
 public abstract void Modify(SkillCost cost, StatTypes typeToChange);
Exemplo n.º 11
0
 private void Start()
 {
     skillCost = GetComponent <SkillCost>();
     SetAllSkillText();
     lang = FindObjectOfType <MainMenu>().language;
 }
Exemplo n.º 12
0
        protected void tvSkills_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            if (e.Node.Checked)
            {
                TreeView OrigTreeView = new TreeView();
                CopyTreeNodes(tvSkills, OrigTreeView);

                MarkParentNodes(e.Node);

                List <cSkillPool> oSkillList = Session["CharacterSkillPools"] as List <cSkillPool>;

                DataTable dtPointsSpent = new DataTable();
                dtPointsSpent.Columns.Add(new DataColumn("PoolID", typeof(int)));
                dtPointsSpent.Columns.Add(new DataColumn("CPSpent", typeof(double)));
                dtPointsSpent.Columns.Add(new DataColumn("TotalCP", typeof(double)));

                foreach (cSkillPool cSkill in oSkillList)
                {
                    DataRow dNewRow = dtPointsSpent.NewRow();
                    dNewRow["PoolID"]  = cSkill.PoolID;
                    dNewRow["TotalCP"] = cSkill.TotalPoints;
                    dNewRow["CPSpent"] = 0.0;

                    dtPointsSpent.Rows.Add(dNewRow);
                }

                DataTable dtAllSkills = Session["SkillNodes"] as DataTable;
                double    TotalSpent  = 0.0;

                DataTable dtSkillCosts = new DataTable();
                dtSkillCosts.Columns.Add(new DataColumn("Skill", typeof(string)));
                dtSkillCosts.Columns.Add(new DataColumn("Cost", typeof(double)));
                dtSkillCosts.Columns.Add(new DataColumn("SortOrder", typeof(int)));
                dtSkillCosts.Columns.Add(new DataColumn("SkillID", typeof(int)));

                double TotalCP = 0.0;
                double.TryParse(Session["TotalCP"].ToString(), out TotalCP);

                string sSkills = "";
                foreach (TreeNode SkillNode in tvSkills.CheckedNodes)
                {
                    int iSkillID;
                    if (int.TryParse(SkillNode.Value, out iSkillID))
                    {
                        DataRow[] dSkillRow = dtAllSkills.Select("CampaignSkillNodeID = " + iSkillID.ToString());
                        if (dSkillRow.Length > 0)
                        {
                            double SkillCost;
                            int    PoolID;
                            if ((double.TryParse(dSkillRow[0]["SkillCPCost"].ToString(), out SkillCost)) &&
                                (int.TryParse(dSkillRow[0]["CampaignSkillPoolID"].ToString(), out PoolID)))
                            {
                                if (dtSkillCosts.Select("SkillID = " + iSkillID.ToString()).Length == 0)
                                {
                                    DataRow[] dSkillCountRow = dtPointsSpent.Select("PoolID = " + PoolID.ToString());
                                    if (dSkillCountRow.Length > 0)
                                    {
                                        dSkillCountRow[0]["CPSpent"] = (double)(dSkillCountRow[0]["CPSpent"]) + SkillCost;
                                    }
                                }
                                TotalSpent += SkillCost;
                                if (SkillCost > 0)
                                {
                                    sSkills += dSkillRow[0]["SkillName"].ToString() + ":" + SkillCost.ToString() + ", ";
                                }
                                DataRow dNewRow = dtSkillCosts.NewRow();
                                dNewRow["Skill"]     = dSkillRow[0]["SkillName"].ToString();
                                dNewRow["Cost"]      = SkillCost;
                                dNewRow["SkillID"]   = iSkillID;
                                dNewRow["SortOrder"] = 10;
                                dtSkillCosts.Rows.Add(dNewRow);
                            }
                        }
                    }
                }

                bool bSpentTooMuch = false;

                foreach (DataRow dCostRow in dtPointsSpent.Rows)
                {
                    double CPSpent;
                    double TotalCPForPool;
                    if ((double.TryParse(dCostRow["TotalCP"].ToString(), out TotalCPForPool)) &&
                        (double.TryParse(dCostRow["CPSpent"].ToString(), out CPSpent)))
                    {
                        if (CPSpent > TotalCPForPool)
                        {
                            bSpentTooMuch = true;
                        }
                    }
                }

                if (bSpentTooMuch)
                {
                    tvSkills.Nodes.Clear();
                    TreeView OrigTree = Session["CurrentSkillTree"] as TreeView;
                    CopyTreeNodes(OrigTree, tvSkills);

                    AlertMessage = "You do not have enough CP to buy that.";
                }
                else
                {
                    bMeetAllRequirements = true;
                    CheckForRequirements(e.Node.Value);
                    if (!bMeetAllRequirements)
                    {
                        tvSkills.Nodes.Clear();
                        TreeView OrigTree = Session["CurrentSkillTree"] as TreeView;
                        CopyTreeNodes(OrigTree, tvSkills);
                        e.Node.Checked = false;
                        AlertMessage   = "You do not have all the requirements to purchase that item.";
                    }
                    else
                    {
                        CheckAllNodesWithValue(e.Node.Value, true);
                    }
                }
                List <TreeNode> FoundNodes = FindNodesByValue(e.Node.Value);
                foreach (TreeNode t in FoundNodes)
                {
                    t.ShowCheckBox = false;
                    EnableChildren(t);
                }
            }
            else
            {
                // Check to see if we should not allow them to sell it back.
                if (ViewState["SkillList"] != null)
                {
                    int iSkillID;
                    if (int.TryParse(e.Node.Value, out iSkillID))
                    {
                        List <int> SkillList = ViewState["SkillList"] as List <int>;
                        if (SkillList.Contains(iSkillID))
                        {
                            if (hidAllowCharacterRebuild.Value == "0")
                            {
                                e.Node.Checked = true;
                                AlertMessage   = "This campaign is not allowing skills to be rebuilt at this time.  Once a skill is selected and saved, it cannot be changed.";
                                //ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(),
                                //        "MyApplication",
                                //        jsString,
                                //        true);
                                return;
                            }
                        }
                    }
                }
                DeselectChildNodes(e.Node);
                CheckAllNodesWithValue(e.Node.Value, false);

                List <TreeNode> FoundNodes = FindNodesByValue(e.Node.Value);
                foreach (TreeNode t in FoundNodes)
                {
                    t.Text         = t.Text.Replace("grey", "black");
                    t.ImageUrl     = "";
                    t.ShowCheckBox = true;
                    EnableChildren(t);
                }
            }
            CheckExclusions();
            ListSkills();
            Session["CurrentSkillTree"] = tvSkills;

            lblMessage.Text      = "Skills Changed";
            lblMessage.ForeColor = Color.Red;
        }
Exemplo n.º 13
0
 private void Start()
 {
     upMenu    = FindObjectOfType <Upgrademenu>();
     skillCost = FindObjectOfType <SkillCost>();
 }
Exemplo n.º 14
0
        /// <summary>
        /// スキル効果を適用
        /// </summary>
        /// <param name="skill_type"></param>
        /// <param name="passive_skill_master"></param>
        /// <param name="member_index"></param>
        /// <param name="is_link_member"></param>
        /// <param name="dest_param_ai"></param>
        public void applySkill(MasterDataDefineLabel.AutoPlaySkillType skill_type, GlobalDefine.PartyCharaIndex member_index, bool is_link_member)
        {
            CostInfo cost_info         = null;
            int      work_panel_plus   = 0;
            bool     work_is_resurrect = false;
            int      skip_on_hands     = 0;

            switch (skill_type)
            {
            case MasterDataDefineLabel.AutoPlaySkillType.SKILL1_SELF:
                cost_info = _getActiveSkillCost(member_index, 0);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL1_LEADER:
                cost_info = _getActiveSkillCost(GlobalDefine.PartyCharaIndex.LEADER, 0);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL2_SELF:
                cost_info = _getActiveSkillCost(member_index, 1);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL2_LEADER:
                cost_info = _getActiveSkillCost(GlobalDefine.PartyCharaIndex.LEADER, 1);
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_NAUGHT:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_FIRE:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_WATER:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_LIGHT:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_DARK:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_WIND:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_HEAL:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL);
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.TRY_RESURRECT:
                work_is_resurrect = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL1_SELF:
                m_SkipOnSkillFormeds[0, (int)member_index] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL1_LEADER:
                m_SkipOnSkillFormeds[0, (int)GlobalDefine.PartyCharaIndex.LEADER] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL2_SELF:
                m_SkipOnSkillFormeds[1, (int)member_index] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL2_LEADER:
                m_SkipOnSkillFormeds[1, (int)GlobalDefine.PartyCharaIndex.LEADER] = true;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_1:
                skip_on_hands = 1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_2:
                skip_on_hands = 2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_3:
                skip_on_hands = 3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_4:
                skip_on_hands = 4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_5:
                skip_on_hands = 5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_6:
                skip_on_hands = 6;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_1:
                work_panel_plus = 1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_2:
                work_panel_plus = 2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_3:
                work_panel_plus = 3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_4:
                work_panel_plus = 4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_5:
                work_panel_plus = 5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_6:
                work_panel_plus = 6;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_7:
                work_panel_plus = 7;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_8:
                work_panel_plus = 8;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_9:
                work_panel_plus = 9;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_10:
                work_panel_plus = 10;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_1:
                work_panel_plus = -1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_2:
                work_panel_plus = -2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_3:
                work_panel_plus = -3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_4:
                work_panel_plus = -4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_5:
                work_panel_plus = -5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_6:
                work_panel_plus = -6;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_7:
                work_panel_plus = -7;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_8:
                work_panel_plus = -8;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_9:
                work_panel_plus = -9;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_10:
                work_panel_plus = -10;
                break;
            }

            if (cost_info != null)
            {
                int link_idx = (is_link_member ? 1 : 0);
                for (int skill_idx = 0; skill_idx < m_SkillCosts.GetLength(2); skill_idx++)
                {
                    if (m_SkillCosts[link_idx, (int)member_index, skill_idx] == null)
                    {
                        SkillCost skill_cost = new SkillCost();
                        skill_cost.m_CostInfo = cost_info;
                        m_SkillCosts[link_idx, (int)member_index, skill_idx] = skill_cost;
                        break;
                    }
                }
            }

            m_PanelPutCount += work_panel_plus;

            m_IsTryResurrect |= work_is_resurrect;

            if (m_SkipOnHands == 0)
            {
                m_SkipOnHands = skip_on_hands;
            }
        }
Exemplo n.º 15
0
        public static void StartUp(TestContext context)
        {
            DamageTypeTemplate trueDamage = new DamageTypeTemplate(Engine, null, null, null, null);

            trueDamage.Key  = "T";
            trueDamage.Name = "true";
            Engine.AddDamageType(trueDamage);
            ResourceTemplate res = new ResourceTemplate()
            {
                Key = "MP"
            };

            SkillCost nullCost = new SkillCost(res, TreeConverter.Build("0", Engine));
            SkillCost notFree  = new SkillCost(res, TreeConverter.Build("50", Engine));

            _testSkill      = new SkillTemplate();
            _testSkill.Type = SkillType.Cast;
            _testSkill.Key  = "TEST_CAST";
            SkillLevelTemplate testLevelTemplate = new SkillLevelTemplate();

            testLevelTemplate.Cooldown      = TreeConverter.Build("3", Engine);
            testLevelTemplate.Duration      = TreeConverter.Build($"{LConstants.SourceKeyword}{LConstants.PROP_OP}INT", Engine);
            testLevelTemplate.Interruptible = TreeConverter.Build("true", Engine);
            testLevelTemplate.Formulas.Add(TreeConverter.Build($"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10)", Engine));
            testLevelTemplate.PushBack = TreeConverter.Build("true", Engine);
            testLevelTemplate.Cost     = nullCost;
            _testSkill.ByLevel.Add(testLevelTemplate);

            _testChannelSkill      = new SkillTemplate();
            _testChannelSkill.Type = SkillType.Channel;
            _testChannelSkill.Key  = "TEST_CHANNEL";
            SkillLevelTemplate testLevelTemplate2 = new SkillLevelTemplate();

            testLevelTemplate2.Cooldown      = TreeConverter.Build("120", Engine);
            testLevelTemplate2.Duration      = TreeConverter.Build("60", Engine);
            testLevelTemplate2.Interval      = TreeConverter.Build("10", Engine);
            testLevelTemplate2.PushBack      = TreeConverter.Build("true", Engine);
            testLevelTemplate2.Interruptible = TreeConverter.Build("true", Engine);
            testLevelTemplate2.Cost          = nullCost;
            MeNode channelFormula = TreeConverter.Build(
                $"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10)",
                Engine);

            Engine.GetSanitizer().SetHarmsToPeriodic(channelFormula);

            testLevelTemplate2.Formulas.Add(channelFormula);
            _testChannelSkill.ByLevel.Add(testLevelTemplate2);

            _instantHarm      = new SkillTemplate();
            _instantHarm.Type = SkillType.Cast;
            _instantHarm.Key  = "HURT";
            SkillLevelTemplate hurtLevelTemplate = new SkillLevelTemplate();

            hurtLevelTemplate.Cooldown      = TreeConverter.Build("0", Engine);
            hurtLevelTemplate.Duration      = TreeConverter.Build("0", Engine);
            hurtLevelTemplate.PushBack      = TreeConverter.Build("false", Engine);
            hurtLevelTemplate.Interruptible = TreeConverter.Build("true", Engine);
            hurtLevelTemplate.Formulas.Add(TreeConverter.Build($"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10)", Engine));
            hurtLevelTemplate.Cost = nullCost;
            _instantHarm.ByLevel.Add(hurtLevelTemplate);



            _unpushable      = new SkillTemplate();
            _unpushable.Type = SkillType.Cast;
            _unpushable.Key  = "NOPUSH";
            SkillLevelTemplate unpushTemplate = new SkillLevelTemplate();

            unpushTemplate.Cooldown      = TreeConverter.Build("0", Engine);
            unpushTemplate.Duration      = TreeConverter.Build("5", Engine);
            unpushTemplate.Interruptible = TreeConverter.Build("false", Engine);
            unpushTemplate.PushBack      = TreeConverter.Build("false", Engine);
            unpushTemplate.Formulas.Add(TreeConverter.Build($"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10)", Engine));
            unpushTemplate.Cost = nullCost;
            _unpushable.ByLevel.Add(unpushTemplate);


            _costly      = new SkillTemplate();
            _costly.Type = SkillType.Cast;
            _costly.Key  = "COSTLY";
            SkillLevelTemplate costlyTemplate = new SkillLevelTemplate();

            costlyTemplate.Cooldown      = TreeConverter.Build("0", Engine);
            costlyTemplate.Duration      = TreeConverter.Build("0", Engine);
            costlyTemplate.Interruptible = TreeConverter.Build("true", Engine);
            costlyTemplate.Formulas.Add(TreeConverter.Build($"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10)", Engine));
            costlyTemplate.PushBack = TreeConverter.Build("true", Engine);
            costlyTemplate.Cost     = notFree;
            _costly.ByLevel.Add(costlyTemplate);


            _skillUsingStat      = new SkillTemplate();
            _skillUsingStat.Type = SkillType.Cast;
            _skillUsingStat.Key  = "WITH_STAT";
            SkillLevelTemplate withStaTemplate = new SkillLevelTemplate();

            withStaTemplate.Cooldown      = TreeConverter.Build("0", Engine);
            withStaTemplate.Duration      = TreeConverter.Build("0", Engine);
            withStaTemplate.Interruptible = TreeConverter.Build("true", Engine);
            withStaTemplate.Formulas.Add(TreeConverter.Build($"{LConstants.HARM_F}({LConstants.TargetKeyword},{LConstants.SourceKeyword},{trueDamage.Key},10*{LConstants.SourceKeyword}{LConstants.PROP_OP}STR+{LConstants.GET_PROP_F}({LConstants.SourceKeyword},{BASE_VALUE}))", Engine));
            withStaTemplate.PushBack = TreeConverter.Build("true", Engine);
            withStaTemplate.Cost     = nullCost;

            _skillUsingStat.ByLevel.Add(withStaTemplate);
        }
Exemplo n.º 16
0
 public AddSkillCostBuffEffect(SkillCost costToadd)
 {
     this.costToadd = costToadd;
 }