コード例 #1
0
 private static int updateNode_GetNextID(NodeBank nodeBank)
 {
     return(nodeBank.NodeTrees.SelectMany(n => n.Nodes).Any()
                ? (nodeBank.NodeTrees.SelectMany(n => n.Nodes).Max(n => n.WindowID) + 1)
                : 0);
 }
コード例 #2
0
        public Rmh_Nodes()
        {
            var x = new NodeTree {
                ID = DamageTakenTreeName, Name = DamageTakenTreeName, Required = true, Type = NodeTreeType.Combat
            };
            var n = new NodeTree {
                ID = DamageDealtTreeName, Name = DamageDealtTreeName, Required = true, Type = NodeTreeType.Combat
            };
            var y = new NodeTree {
                ID = StatScalingTreeName, Name = StatScalingTreeName, Required = true, Type = NodeTreeType.Combat
            };
            var p = new NodeTree {
                ID = VitalScalingTreeName, Name = VitalScalingTreeName, Required = true, Type = NodeTreeType.Combat
            };


            var node = new CombatStartNode("Min Physical Damage", "Start node for dealt physical",
                                           "Physical Damage represents weapon damage, or base combatant damage. You can then add additional nodes to add onto this value. Example: Add 10x Strength")
            {
                Identifier = "MIN_Physical"
            };

            node.OnCreate();
            n.AddNode(node, new Vector2(25, 87.5f), 0);
            var nodeMax = new CombatStartNode("Max Physical Damage", "Start node for dealt physical",
                                              "Physical Damage represents weapon damage, or base combatant damage. You can then add additional nodes to add onto this value. Example: Add 10x Strength")
            {
                Identifier = "MAX_Physical"
            };

            nodeMax.OnCreate();
            n.AddNode(nodeMax, new Vector2(25, 287.5f), 1);

            var damageTakenNode = new CombatStartNode("Damage To Be Dealt", "Represents damage about to be taken",
                                                      "This is the incoming damage. It can be modified to take into account other stats. E.g. Damage - Defender's Armor value.")
            {
                Identifier = "DamageTaken"
            };
            var missedNode     = new MissedHitNode();
            var evadedNode     = new EvadedHitNode();
            var successHitNode = new SuccessHitEndNode();

            damageTakenNode.OnCreate();
            missedNode.OnCreate();
            successHitNode.OnCreate();
            evadedNode.OnCreate();
            x.AddNode(damageTakenNode, new Vector2(25, 87.5f), 0);
            x.AddNode(successHitNode, new Vector2(700, 87.5f), 1);
            x.AddNode(missedNode, new Vector2(700, 237.5f), 2);
            x.AddNode(evadedNode, new Vector2(700, 387.5f), 3);

            n.Variables.Add(new NodeTreeVar("Attacker", PropertyType.CombatCharacter));

            y.Variables.Add(new NodeTreeVar("Attacker", PropertyType.CombatCharacter));
            p.Variables.Add(new NodeTreeVar("Attacker", PropertyType.CombatCharacter));

            x.Variables.Add(new NodeTreeVar("Attacker", PropertyType.CombatCharacter));
            x.Variables.Add(new NodeTreeVar("Defender", PropertyType.CombatCharacter));
            x.Variables.Add(new NodeTreeVar("Physical Damage", PropertyType.Int)
            {
                ID = "DamageDealtVar_Physical"
            });

            AchievementsNodeBank = new NodeBank()
            {
                Type      = NodeTreeType.Achievements,
                NodeTrees = new List <NodeTree>()
            };

            CombatNodeBank = new NodeBank
            {
                Type      = NodeTreeType.Combat,
                NodeTrees = new List <NodeTree>()
                {
                    x, n, y, p
                }
            };

            EventNodeBank = new NodeBank
            {
                Type      = NodeTreeType.Event,
                NodeTrees = new List <NodeTree>()
            };

            DialogNodeBank = new NodeBank
            {
                Type      = NodeTreeType.Dialog,
                NodeTrees = new List <NodeTree>()
            };

            WorldMapNodeBank = new NodeBank
            {
                Type      = NodeTreeType.WorldMap,
                NodeTrees = new List <NodeTree>()
                {
                    new NodeTree()
                    {
                        ID = CoreInitialMap, Name = CoreInitialMap, Required = true, Type = NodeTreeType.Combat
                    }
                }
            };
        }