예제 #1
0
 public ShipStats(ShipStatData data)
 {
     ShieldType          = data.ShieldType;
     ShipType            = data.ShipType;
     Id                  = data.Id;
     Name                = data.Name;
     Description         = data.Description;
     MaxShields          = data.MaxShields;
     MaxHealth           = data.MaxHealth;
     Energy              = data.Energy;
     MaxHolds            = data.TotalHolds;
     BaseWeight          = data.BaseWeight;
     Graphic             = data.Graphic;
     ThrustGraphic       = data.ThrustGraphic;
     Class               = data.Class;
     TurnRate            = data.TurnRate;
     EnergyRegenRate     = data.EnergyRegenRate;
     HaloShieldRegenRate = data.HaloShieldRegenRate;
     SlowShieldRegenRate = data.SlowShieldRegenRate;
     BoostBonus          = data.BoostBonus;
     TopSpeed            = data.TopSpeed;
     BaseThrustForward   = data.BaseThrustForward;
     BaseThrustReverse   = data.BaseThrustReverse;
     BaseThrustLateral   = data.BaseThrustLateral;
 }
예제 #2
0
 public ShieldInfo(int armor, int shield, ShieldTypes shieldType, bool isDefense)
 {
     Armor      = armor;
     Shield     = shield;
     ShieldType = shieldType;
     IsDefense  = isDefense;
 }
예제 #3
0
        public ItemWrapper(ACDItem item)
        {
            ActorSNO            = item.ActorSNO;
            GameBalanceId       = item.GameBalanceId;
            DynamicID           = item.DynamicId;
            ACDGuid             = item.ACDGuid;
            InventorySlot       = item.InventorySlot;
            ValidInventorySlots = item.ValidInventorySlots;
            RequiredLevel       = item.RequiredLevel;
            IsUnidentified      = item.IsUnidentified;
            IsTwoHand           = item.IsTwoHand;
            IsOneHand           = item.IsOneHand;
            Name              = item.Name;
            InternalName      = item.InternalName;
            this.ItemType     = item.ItemType;
            this.ItemBaseType = item.ItemBaseType;
            IsShield          = ShieldTypes.Contains(ItemType);
            IsOffHand         = OffHandTypes.Contains(ItemType);
            IsArmor           = ArmorTypes.Contains(ItemType);
            IsJewlery         = JewleryTypes.Contains(ItemType);
            IsWeapon          = WeaponTypes.Contains(ItemType);
            IsMisc            = MiscTypes.Contains(ItemType);

            HasSingleUseSlot = IsSingleSlotItem();

            Item  = item;
            Stats = item.Stats;
        }
예제 #4
0
    public static ShieldInfo Deserialze(DataStream reader)
    {
        int         Armor      = reader.ReadSInt32();
        int         Shield     = reader.ReadSInt32();
        ShieldTypes ShieldType = (ShieldTypes)reader.ReadSInt32();
        bool        IsDefense  = reader.ReadByte() == 0x01;

        return(new ShieldInfo(Armor, Shield, ShieldType, IsDefense));
    }
        /// <summary>
        /// Return the PinPort of a shield, if not exits return null
        /// </summary>
        /// <param name="shield"></param>
        /// <returns></returns>
        public static PinPort GetDimmerPassZeroPinPort(ShieldTypes shield)
        {
            var dictionary = GetShieldDictionary(shield);

            if (dictionary.Values.Any(elem => elem.Item1 == ConnectorTypes.DimmerPassZero))
            {
                return dictionary.Values.First(elem => elem.Item1 == ConnectorTypes.DimmerPassZero).Item2[0];
            }

            return null;
        }
예제 #6
0
        /// <summary>
        /// Return the PinPort of a shield, if not exits return null
        /// </summary>
        /// <param name="shield"></param>
        /// <returns></returns>
        public static PinPort GetDimmerPassZeroPinPort(ShieldTypes shield)
        {
            var dictionary = GetShieldDictionary(shield);

            if (dictionary.Values.Any(elem => elem.Item1 == ConnectorTypes.DimmerPassZero))
            {
                return(dictionary.Values.First(elem => elem.Item1 == ConnectorTypes.DimmerPassZero).Item2[0]);
            }

            return(null);
        }
예제 #7
0
        public ItemWrapper(ACDItem item)
        {
            try
            {
                ActorSNO            = item.ActorSNO;
                GameBalanceId       = item.GameBalanceId;
                DynamicId           = item.DynamicId;
                ACDGuid             = item.ACDGuid;
                InventorySlot       = item.InventorySlot;
                ValidInventorySlots = item.ValidInventorySlots;
                RequiredLevel       = item.RequiredLevel;
            }
            catch (Exception ex)
            {
                Logger.LogError("Error wrapping non-attribute properties on item {0}: " + ex);
            }
            try
            {
                Name                  = item.Name;
                IsUnidentified        = item.IsUnidentified;
                IsTwoHand             = item.IsTwoHand;
                IsOneHand             = item.IsOneHand;
                InternalName          = item.InternalName;
                ItemType              = item.ItemType;
                ItemBaseType          = item.ItemBaseType;
                IsShield              = ShieldTypes.Contains(ItemType);
                IsOffHand             = OffHandTypes.Contains(ItemType);
                IsArmor               = ArmorTypes.Contains(ItemType);
                IsJewelry             = JewleryTypes.Contains(ItemType);
                IsWeapon              = WeaponTypes.Contains(ItemType);
                IsEquipment           = item.ItemBaseType == ItemBaseType.Armor || item.ItemBaseType == ItemBaseType.Jewelry || item.ItemBaseType == ItemBaseType.Weapon;
                IsMisc                = MiscTypes.Contains(ItemType);
                IsGem                 = item.ItemBaseType == ItemBaseType.Gem;
                IsTwoSquareItem       = (item.ItemBaseType == ItemBaseType.Armor || item.ItemBaseType == ItemBaseType.Weapon) && item.IsTwoSquareItem;
                IsPotion              = item.IsPotion;
                ItemQualityLevel      = item.ItemQualityLevel;
                GemQuality            = item.GemQuality;
                TieredLootRunKeyLevel = item.TieredLootRunKeyLevel;
                ItemStackQuantity     = item.ItemStackQuantity;
                IsSetItem             = item.IsSetItem();
                ItemSetName           = item.ItemSetName();

                HasSingleUseSlot = IsSingleSlotItem();

                Item          = item;
                Stats         = item.Stats;
                StatsData     = ItemStatsDataFactory.GetItemStatsDataFromStats(Stats);
                ReferenceItem = new Item(Item);
            }
            catch (Exception ex)
            {
                Logger.LogError("Error wrapping item {0}: " + ex);
            }
        }
예제 #8
0
        public void SetCondShield(ShieldTypes s_type, int val)
        {
            int count = new List <EUnitCondition>((IEnumerable <EUnitCondition>)Enum.GetValues(typeof(EUnitCondition))).Count;

            if (UnityEngine.Object.op_Implicit((UnityEngine.Object) this.ImageCond) && count >= 0 && count < this.ImageCond.Images.Length)
            {
                this.ImageCond.ImageIndex = count;
            }
            if (!UnityEngine.Object.op_Implicit((UnityEngine.Object) this.TextValue))
            {
                return;
            }
            this.TextValue.set_text(string.Format(LocalizedText.Get("quest.BUD_COND_SHIELD_DETAIL"), (object)string.Format(LocalizedText.Get(this.mStrShieldDesc[(int)s_type]), (object)val)));
        }
예제 #9
0
        //TOCHECK
        public static void ChangeShield(this Node node, ShieldTypes newShield)
        {
            //Unlink all home devices
            node.UnlinkAllConnectors();

            //Delete connectors
            node.Connectors.Clear();

            //Create new connectors
            foreach (var item in ProductConfiguration.GetShieldDictionary(newShield))
            {
                node.Connectors.Add(BusinessConnector.CreateConnector(item.Key, item.Value.Item1));
            }
        }
예제 #10
0
        //TOCHECK
        public static void ChangeShield(this Node node, ShieldTypes newShield)
        {
            //Unlink all home devices
            node.UnlinkAllConnectors();

            //Delete connectors
            node.Connectors.Clear();

            //Create new connectors
            foreach (var item in ProductConfiguration.GetShieldDictionary(newShield))
            {
                node.Connectors.Add(BusinessConnector.CreateConnector(item.Key, item.Value.Item1));
            }
        }
예제 #11
0
        public static Node CreateNode(BaseTypes baseType, ShieldTypes shieldType)
        {
            Node node = new Node
            {
                Base = baseType,
                Shield = shieldType,
                NetworkRetries = 3,
            };

            foreach (var item in ProductConfiguration.GetShieldDictionary(shieldType))
            {
                if(item.Value.Item1 != DataLayer.Entities.Enums.ConnectorTypes.DimmerPassZero)
                    node.Connectors.Add(BusinessConnector.CreateConnector(item.Key, item.Value.Item1));
            }

            return node;
        }
예제 #12
0
        public static Node CreateNode(BaseTypes baseType, ShieldTypes shieldType)
        {
            Node node = new Node
            {
                Base           = baseType,
                Shield         = shieldType,
                NetworkRetries = 3,
            };

            foreach (var item in ProductConfiguration.GetShieldDictionary(shieldType))
            {
                if (item.Value.Item1 != DataLayer.Entities.Enums.ConnectorTypes.DimmerPassZero)
                {
                    node.Connectors.Add(BusinessConnector.CreateConnector(item.Key, item.Value.Item1));
                }
            }

            return(node);
        }
예제 #13
0
        public bool Deserialize(JSON_SkillParam json)
        {
            if (json == null)
            {
                return(false);
            }
            this.iname               = json.iname;
            this.name                = json.name;
            this.expr                = json.expr;
            this.motion              = json.motnm;
            this.effect              = json.effnm;
            this.defend_effect       = json.effdef;
            this.weapon              = json.weapon;
            this.tokkou              = json.tktag;
            this.tk_rate             = json.tkrate;
            this.type                = (ESkillType)json.type;
            this.timing              = (ESkillTiming)json.timing;
            this.condition           = (ESkillCondition)json.cond;
            this.target              = (ESkillTarget)json.target;
            this.line_type           = (ELineType)json.line;
            this.lvcap               = (OInt)json.cap;
            this.cost                = (OInt)json.cost;
            this.count               = (OInt)json.count;
            this.rate                = (OInt)json.rate;
            this.select_range        = (ESelectType)json.sran;
            this.range_min           = (OInt)json.rangemin;
            this.range_max           = (OInt)json.range;
            this.select_scope        = (ESelectType)json.ssco;
            this.scope               = (OInt)json.scope;
            this.effect_height       = (OInt)json.eff_h;
            this.back_defrate        = (OInt)json.bdb;
            this.side_defrate        = (OInt)json.sdb;
            this.ignore_defense_rate = (OInt)json.idr;
            this.job                  = json.job;
            this.SceneName            = json.scn;
            this.ComboNum             = (OInt)json.combo_num;
            this.ComboDamageRate      = (OInt)(100 - Math.Abs(json.combo_rate));
            this.IsCritical           = (OBool)(json.is_cri != 0);
            this.JewelDamageType      = (JewelDamageTypes)json.jdtype;
            this.JewelDamageValue     = (OInt)json.jdv;
            this.IsJewelAbsorb        = (OBool)(json.jdabs != 0);
            this.DuplicateCount       = (OInt)json.dupli;
            this.CollaboMainId        = json.cs_main_id;
            this.CollaboHeight        = (OInt)json.cs_height;
            this.KnockBackRate        = (OInt)json.kb_rate;
            this.KnockBackVal         = (OInt)json.kb_val;
            this.KnockBackDir         = (eKnockBackDir)json.kb_dir;
            this.KnockBackDs          = (eKnockBackDs)json.kb_ds;
            this.DamageDispType       = (eDamageDispType)json.dmg_dt;
            this.ReplaceTargetIdLists = (List <string>)null;
            if (json.rp_tgt_ids != null)
            {
                this.ReplaceTargetIdLists = new List <string>();
                foreach (string rpTgtId in json.rp_tgt_ids)
                {
                    this.ReplaceTargetIdLists.Add(rpTgtId);
                }
            }
            this.ReplaceChangeIdLists = (List <string>)null;
            if (json.rp_chg_ids != null && this.ReplaceTargetIdLists != null)
            {
                this.ReplaceChangeIdLists = new List <string>();
                foreach (string rpChgId in json.rp_chg_ids)
                {
                    this.ReplaceChangeIdLists.Add(rpChgId);
                }
            }
            if (this.ReplaceTargetIdLists != null && this.ReplaceChangeIdLists != null && this.ReplaceTargetIdLists.Count != this.ReplaceChangeIdLists.Count)
            {
                this.ReplaceTargetIdLists.Clear();
                this.ReplaceChangeIdLists.Clear();
            }
            this.AbilityReplaceTargetIdLists = (List <string>)null;
            if (json.ab_rp_tgt_ids != null)
            {
                this.AbilityReplaceTargetIdLists = new List <string>();
                foreach (string abRpTgtId in json.ab_rp_tgt_ids)
                {
                    this.AbilityReplaceTargetIdLists.Add(abRpTgtId);
                }
            }
            this.AbilityReplaceChangeIdLists = (List <string>)null;
            if (json.ab_rp_chg_ids != null && this.AbilityReplaceTargetIdLists != null)
            {
                this.AbilityReplaceChangeIdLists = new List <string>();
                foreach (string abRpChgId in json.ab_rp_chg_ids)
                {
                    this.AbilityReplaceChangeIdLists.Add(abRpChgId);
                }
            }
            if (this.AbilityReplaceTargetIdLists != null && this.AbilityReplaceChangeIdLists != null && this.AbilityReplaceTargetIdLists.Count != this.AbilityReplaceChangeIdLists.Count)
            {
                this.AbilityReplaceTargetIdLists.Clear();
                this.AbilityReplaceChangeIdLists.Clear();
            }
            this.CollaboVoiceId             = json.cs_voice;
            this.CollaboVoicePlayDelayFrame = json.cs_vp_df;
            this.TeleportType           = (eTeleportType)json.tl_type;
            this.TeleportTarget         = (ESkillTarget)json.tl_target;
            this.TeleportHeight         = json.tl_height;
            this.TeleportIsMove         = json.tl_is_mov != 0;
            this.TrickId                = json.tr_id;
            this.TrickSetType           = (eTrickSetType)json.tr_set;
            this.BreakObjId             = json.bo_id;
            this.MapEffectDesc          = json.me_desc;
            this.WeatherRate            = json.wth_rate;
            this.WeatherId              = json.wth_id;
            this.ElementSpcAtkRate      = json.elem_tk;
            this.MaxDamageValue         = json.max_dmg;
            this.CutInConceptCardId     = json.ci_cc_id;
            this.JudgeHpVal             = json.jhp_val;
            this.JudgeHpCalc            = (SkillParamCalcTypes)json.jhp_calc;
            this.AcFromAbilId           = json.ac_fr_ab_id;
            this.AcToAbilId             = json.ac_to_ab_id;
            this.AcTurn                 = json.ac_turn;
            this.EffectHitTargetNumRate = (OInt)json.eff_htnrate;
            this.AbsorbAndGive          = (eAbsorbAndGive)json.aag;
            this.TargetEx               = (eSkillTargetEx)json.target_ex;
            this.JumpSpcAtkRate         = json.jmp_tk;
            this.flags = (SkillFlags)0;
            if (json.cutin != 0)
            {
                this.flags |= SkillFlags.ExecuteCutin;
            }
            if (json.isbtl != 0)
            {
                this.flags |= SkillFlags.ExecuteInBattle;
            }
            if (json.chran != 0)
            {
                this.flags |= SkillFlags.EnableChangeRange;
            }
            if (json.sonoba != 0)
            {
                this.flags |= SkillFlags.SelfTargetSelect;
            }
            if (json.pierce != 0)
            {
                this.flags |= SkillFlags.PierceAttack;
            }
            if (json.hbonus != 0)
            {
                this.flags |= SkillFlags.EnableHeightRangeBonus;
            }
            if (json.ehpa != 0)
            {
                this.flags |= SkillFlags.EnableHeightParamAdjust;
            }
            if (json.utgt != 0)
            {
                this.flags |= SkillFlags.EnableUnitLockTarget;
            }
            if (json.ctbreak != 0)
            {
                this.flags |= SkillFlags.CastBreak;
            }
            if (json.mpatk != 0)
            {
                this.flags |= SkillFlags.JewelAttack;
            }
            if (json.fhit != 0)
            {
                this.flags |= SkillFlags.ForceHit;
            }
            if (json.suicide != 0)
            {
                this.flags |= SkillFlags.Suicide;
            }
            if (json.sub_actuate != 0)
            {
                this.flags |= SkillFlags.SubActuate;
            }
            if (json.is_fixed != 0)
            {
                this.flags |= SkillFlags.FixedDamage;
            }
            if (json.f_ulock != 0)
            {
                this.flags |= SkillFlags.ForceUnitLock;
            }
            if (json.ad_react != 0)
            {
                this.flags |= SkillFlags.AllDamageReaction;
            }
            if (json.ig_elem != 0)
            {
                this.flags |= SkillFlags.IgnoreElement;
            }
            if (json.is_pre_apply != 0)
            {
                this.flags |= SkillFlags.PrevApply;
            }
            if (json.jhp_over != 0)
            {
                this.flags |= SkillFlags.JudgeHpOver;
            }
            if (json.is_mhm_dmg != 0)
            {
                this.flags |= SkillFlags.MhmDamage;
            }
            if (json.ac_is_self != 0)
            {
                this.flags |= SkillFlags.AcSelf;
            }
            if (json.ac_is_reset != 0)
            {
                this.flags |= SkillFlags.AcReset;
            }
            if (json.is_htndiv != 0)
            {
                this.flags |= SkillFlags.HitTargetNumDiv;
            }
            if (json.is_no_ccc != 0)
            {
                this.flags |= SkillFlags.NoChargeCalcCT;
            }
            if (json.jmpbreak != 0)
            {
                this.flags |= SkillFlags.JumpBreak;
            }
            this.hp_cost          = (OInt)json.hp_cost;
            this.hp_cost_rate     = (OInt)Math.Min(Math.Max(json.hp_cost_rate, 0), 100);
            this.random_hit_rate  = (OInt)json.rhit;
            this.effect_type      = (SkillEffectTypes)json.eff_type;
            this.effect_calc      = (SkillParamCalcTypes)json.eff_calc;
            this.effect_rate      = new SkillRankUpValue();
            this.effect_rate.ini  = (OInt)json.eff_rate_ini;
            this.effect_rate.max  = (OInt)json.eff_rate_max;
            this.effect_value     = new SkillRankUpValue();
            this.effect_value.ini = (OInt)json.eff_val_ini;
            this.effect_value.max = (OInt)json.eff_val_max;
            this.effect_range     = new SkillRankUpValue();
            this.effect_range.ini = (OInt)json.eff_range_ini;
            this.effect_range.max = (OInt)json.eff_range_max;
            this.effect_hprate    = (OInt)json.eff_hprate;
            this.effect_mprate    = (OInt)json.eff_mprate;
            this.effect_dead_rate = (OInt)json.eff_durate;
            this.effect_lvrate    = (OInt)json.eff_lvrate;
            this.attack_type      = (AttackTypes)json.atk_type;
            this.attack_detail    = (AttackDetailTypes)json.atk_det;
            this.element_type     = (EElement)json.elem;
            this.element_value    = (SkillRankUpValue)null;
            if (this.element_type != EElement.None)
            {
                this.element_value     = new SkillRankUpValue();
                this.element_value.ini = (OInt)json.elem_ini;
                this.element_value.max = (OInt)json.elem_max;
            }
            this.cast_type  = (ECastTypes)json.ct_type;
            this.cast_speed = (SkillRankUpValue)null;
            if (this.type == ESkillType.Skill && (json.ct_spd_ini != 0 || json.ct_spd_max != 0))
            {
                this.cast_speed     = new SkillRankUpValue();
                this.cast_speed.ini = (OInt)json.ct_spd_ini;
                this.cast_speed.max = (OInt)json.ct_spd_max;
            }
            this.absorb_damage_rate   = (OInt)json.abs_d_rate;
            this.reaction_damage_type = (DamageTypes)json.react_d_type;
            this.reaction_det_lists   = (List <AttackDetailTypes>)null;
            if (json.react_dets != null)
            {
                this.reaction_det_lists = new List <AttackDetailTypes>();
                foreach (AttackDetailTypes reactDet in json.react_dets)
                {
                    this.reaction_det_lists.Add(reactDet);
                }
            }
            this.control_ct_rate  = (SkillRankUpValue)null;
            this.control_ct_value = (SkillRankUpValue)null;
            if (this.control_ct_calc == SkillParamCalcTypes.Fixed || json.ct_val_ini != 0 || json.ct_val_max != 0)
            {
                this.control_ct_rate      = new SkillRankUpValue();
                this.control_ct_rate.ini  = (OInt)json.ct_rate_ini;
                this.control_ct_rate.max  = (OInt)json.ct_rate_max;
                this.control_ct_value     = new SkillRankUpValue();
                this.control_ct_value.ini = (OInt)json.ct_val_ini;
                this.control_ct_value.max = (OInt)json.ct_val_max;
                this.control_ct_calc      = (SkillParamCalcTypes)json.ct_calc;
            }
            this.target_buff_iname  = json.t_buff;
            this.target_cond_iname  = json.t_cond;
            this.self_buff_iname    = json.s_buff;
            this.self_cond_iname    = json.s_cond;
            this.shield_type        = (ShieldTypes)json.shield_type;
            this.shield_damage_type = (DamageTypes)json.shield_d_type;
            this.shield_turn        = (SkillRankUpValue)null;
            this.shield_value       = (SkillRankUpValue)null;
            if (this.shield_type != ShieldTypes.None && this.shield_damage_type != DamageTypes.None)
            {
                this.shield_turn      = new SkillRankUpValue();
                this.shield_turn.ini  = (OInt)json.shield_turn_ini;
                this.shield_turn.max  = (OInt)json.shield_turn_max;
                this.shield_value     = new SkillRankUpValue();
                this.shield_value.ini = (OInt)json.shield_ini;
                this.shield_value.max = (OInt)json.shield_max;
                if (json.shield_reset != 0)
                {
                    this.flags |= SkillFlags.ShieldReset;
                }
            }
            if (this.reaction_damage_type != DamageTypes.None || this.shield_damage_type != DamageTypes.None)
            {
                this.control_damage_rate      = new SkillRankUpValue();
                this.control_damage_rate.ini  = (OInt)json.ctrl_d_rate_ini;
                this.control_damage_rate.max  = (OInt)json.ctrl_d_rate_max;
                this.control_damage_value     = new SkillRankUpValue();
                this.control_damage_value.ini = (OInt)json.ctrl_d_ini;
                this.control_damage_value.max = (OInt)json.ctrl_d_max;
                this.control_damage_calc      = (SkillParamCalcTypes)json.ctrl_d_calc;
            }
            SkillEffectTypes effectType = this.effect_type;

            switch (effectType)
            {
            case SkillEffectTypes.Teleport:
            case SkillEffectTypes.Changing:
            case SkillEffectTypes.Throw:
                this.scope        = (OInt)0;
                this.select_scope = ESelectType.Cross;
                break;

            case SkillEffectTypes.RateDamage:
                if (this.attack_type == AttackTypes.None)
                {
                    this.attack_type = AttackTypes.PhyAttack;
                    break;
                }
                break;

            default:
                if (effectType == SkillEffectTypes.Attack || effectType == SkillEffectTypes.ReflectDamage || effectType == SkillEffectTypes.RateDamageCurrent)
                {
                    goto case SkillEffectTypes.RateDamage;
                }
                else
                {
                    break;
                }
            }
            if (this.select_range == ESelectType.Laser)
            {
                this.select_scope = ESelectType.Laser;
                this.scope        = (OInt)Math.Max((int)this.scope, 1);
            }
            else
            {
                switch (this.select_range)
                {
                case ESelectType.LaserSpread:
                    this.select_scope = ESelectType.LaserSpread;
                    break;

                case ESelectType.LaserWide:
                    this.select_scope = ESelectType.LaserWide;
                    break;

                case ESelectType.LaserTwin:
                    this.select_scope = ESelectType.LaserTwin;
                    break;

                case ESelectType.LaserTriple:
                    this.select_scope = ESelectType.LaserTriple;
                    break;
                }
                switch (this.select_scope)
                {
                case ESelectType.LaserSpread:
                case ESelectType.LaserWide:
                case ESelectType.LaserTwin:
                case ESelectType.LaserTriple:
                    this.scope = (OInt)1;
                    break;
                }
            }
            if (this.TeleportType != eTeleportType.None)
            {
                if (!this.IsTargetGridNoUnit && this.TeleportType != eTeleportType.BeforeSkill)
                {
                    this.target = ESkillTarget.GridNoUnit;
                }
                if (this.IsTargetTeleport)
                {
                    if (this.IsCastSkill())
                    {
                        this.cast_speed = (SkillRankUpValue)null;
                    }
                    if ((int)this.scope != 0)
                    {
                        this.scope = (OInt)0;
                    }
                }
            }
            if (this.IsTargetValidGrid && !this.IsTrickSkill())
            {
                this.target = ESkillTarget.GridNoUnit;
            }
            if (this.timing == ESkillTiming.Auto && this.effect_type == SkillEffectTypes.Attack)
            {
                this.effect_type = SkillEffectTypes.Buff;
            }
            return(true);
        }
        public static Dictionary<string, Tuple<ConnectorTypes, PinPort[]>> GetShieldDictionary(ShieldTypes shieldtype)
        {
            Dictionary<string, Tuple<ConnectorTypes, PinPort[]>> pinPorts = new Dictionary<string, Tuple<ConnectorTypes, PinPort[]>>();
            switch (shieldtype)
            {
                case ShieldTypes.Debug:
                    pinPorts.Add("Button", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.LogicInput, new PinPort[] { new PinPort("D7") }));
                    pinPorts.Add("DimmerZero", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.DimmerPassZero, new PinPort[] { new PinPort("D0") }));
                    pinPorts.Add("DimmerLight", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.Dimmer, new PinPort[] { new PinPort("D1") }));
                    pinPorts.Add("Light", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.SwitchLOW, new PinPort[] { new PinPort("D6") }));
                    pinPorts.Add("Temperature", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.TemperatureSensor, new PinPort[] { new PinPort("E2") }));
                    pinPorts.Add("Humidity", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.HumiditySensor, new PinPort[] { new PinPort("E2") }));
                    pinPorts.Add("Presence", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.LogicInput, new PinPort[] { new PinPort("B6") }));
                    pinPorts.Add("RGBPort", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.RGB, new PinPort[] { new PinPort("C1"), new PinPort("C2"), new PinPort("C3") }));
                    pinPorts.Add("SensorConnector", new Tuple<ConnectorTypes, PinPort[]>(ConnectorTypes.ConnectorSensorBoard, new PinPort[] { new PinPort("A0"), new PinPort("A1"), new PinPort("A2"), new PinPort("A3"), new PinPort("A4"), new PinPort("A5") }));
                    break;
                default:
                    throw new NotImplementedException();
            }

            return pinPorts;
        }
예제 #15
0
        public static Dictionary <string, Tuple <ConnectorTypes, PinPort[]> > GetShieldDictionary(ShieldTypes shieldtype)
        {
            Dictionary <string, Tuple <ConnectorTypes, PinPort[]> > pinPorts = new Dictionary <string, Tuple <ConnectorTypes, PinPort[]> >();

            switch (shieldtype)
            {
            case ShieldTypes.Debug:
                pinPorts.Add("Button", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.LogicInput, new PinPort[] { new PinPort("D7") }));
                pinPorts.Add("DimmerZero", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.DimmerPassZero, new PinPort[] { new PinPort("D0") }));
                pinPorts.Add("DimmerLight", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.Dimmer, new PinPort[] { new PinPort("D1") }));
                pinPorts.Add("Light", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.SwitchLOW, new PinPort[] { new PinPort("D6") }));
                pinPorts.Add("Temperature", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.TemperatureSensor, new PinPort[] { new PinPort("E2") }));
                pinPorts.Add("Humidity", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.HumiditySensor, new PinPort[] { new PinPort("E2") }));
                pinPorts.Add("Presence", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.LogicInput, new PinPort[] { new PinPort("B6") }));
                pinPorts.Add("RGBPort", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.RGB, new PinPort[] { new PinPort("C1"), new PinPort("C2"), new PinPort("C3") }));
                pinPorts.Add("SensorConnector", new Tuple <ConnectorTypes, PinPort[]>(ConnectorTypes.ConnectorSensorBoard, new PinPort[] { new PinPort("A0"), new PinPort("A1"), new PinPort("A2"), new PinPort("A3"), new PinPort("A4"), new PinPort("A5") }));
                break;

            default:
                throw new NotImplementedException();
            }

            return(pinPorts);
        }
예제 #16
0
        public bool Deserialize(JSON_SkillParam json)
        {
            if (json == null)
            {
                return(false);
            }
            this.iname               = json.iname;
            this.name                = json.name;
            this.expr                = json.expr;
            this.motion              = json.motnm;
            this.effect              = json.effnm;
            this.defend_effect       = json.effdef;
            this.weapon              = json.weapon;
            this.tokkou              = json.tktag;
            this.tk_rate             = json.tkrate;
            this.type                = (ESkillType)json.type;
            this.timing              = (ESkillTiming)json.timing;
            this.condition           = (ESkillCondition)json.cond;
            this.target              = (ESkillTarget)json.target;
            this.line_type           = (ELineType)json.line;
            this.lvcap               = (OInt)json.cap;
            this.cost                = (OInt)json.cost;
            this.count               = (OInt)json.count;
            this.rate                = (OInt)json.rate;
            this.select_range        = (ESelectType)json.sran;
            this.range_min           = (OInt)json.rangemin;
            this.range_max           = (OInt)json.range;
            this.select_scope        = (ESelectType)json.ssco;
            this.scope               = (OInt)json.scope;
            this.effect_height       = (OInt)json.eff_h;
            this.back_defrate        = (OInt)json.bdb;
            this.side_defrate        = (OInt)json.sdb;
            this.ignore_defense_rate = (OInt)json.idr;
            this.job              = json.job;
            this.SceneName        = json.scn;
            this.ComboNum         = (OInt)json.combo_num;
            this.ComboDamageRate  = (OInt)(100 - Math.Abs(json.combo_rate));
            this.IsCritical       = (OBool)(json.is_cri != 0);
            this.JewelDamageType  = (JewelDamageTypes)json.jdtype;
            this.JewelDamageValue = (OInt)json.jdv;
            this.IsJewelAbsorb    = (OBool)(json.jdabs != 0);
            this.DuplicateCount   = (OInt)json.dupli;
            this.CollaboMainId    = json.cs_main_id;
            this.CollaboHeight    = (OInt)json.cs_height;
            this.KnockBackRate    = (OInt)json.kb_rate;
            this.KnockBackVal     = (OInt)json.kb_val;
            this.DamageDispType   = (eDamageDispType)json.dmg_dt;
            this.ReplaceTargetIdLists.Clear();
            if (json.rp_tgt_ids != null)
            {
                foreach (string rpTgtId in json.rp_tgt_ids)
                {
                    this.ReplaceTargetIdLists.Add(rpTgtId);
                }
            }
            this.ReplaceChangeIdLists.Clear();
            if (json.rp_chg_ids != null)
            {
                foreach (string rpChgId in json.rp_chg_ids)
                {
                    this.ReplaceChangeIdLists.Add(rpChgId);
                }
            }
            if (this.ReplaceTargetIdLists.Count != this.ReplaceChangeIdLists.Count)
            {
                this.ReplaceTargetIdLists.Clear();
                this.ReplaceChangeIdLists.Clear();
            }
            this.AbilityReplaceTargetIdLists.Clear();
            if (json.ab_rp_tgt_ids != null)
            {
                foreach (string abRpTgtId in json.ab_rp_tgt_ids)
                {
                    this.AbilityReplaceTargetIdLists.Add(abRpTgtId);
                }
            }
            this.AbilityReplaceChangeIdLists.Clear();
            if (json.ab_rp_chg_ids != null)
            {
                foreach (string abRpChgId in json.ab_rp_chg_ids)
                {
                    this.AbilityReplaceChangeIdLists.Add(abRpChgId);
                }
            }
            if (this.AbilityReplaceTargetIdLists.Count != this.AbilityReplaceChangeIdLists.Count)
            {
                this.AbilityReplaceTargetIdLists.Clear();
                this.AbilityReplaceChangeIdLists.Clear();
            }
            this.CollaboVoiceId             = json.cs_voice;
            this.CollaboVoicePlayDelayFrame = json.cs_vp_df;
            this.flags = (SkillFlags)0;
            if (json.cutin != 0)
            {
                this.flags |= SkillFlags.ExecuteCutin;
            }
            if (json.isbtl != 0)
            {
                this.flags |= SkillFlags.ExecuteInBattle;
            }
            if (json.chran != 0)
            {
                this.flags |= SkillFlags.EnableChangeRange;
            }
            if (json.sonoba != 0)
            {
                this.flags |= SkillFlags.SelfTargetSelect;
            }
            if (json.pierce != 0)
            {
                this.flags |= SkillFlags.PierceAttack;
            }
            if (json.hbonus != 0)
            {
                this.flags |= SkillFlags.EnableHeightRangeBonus;
            }
            if (json.ehpa != 0)
            {
                this.flags |= SkillFlags.EnableHeightParamAdjust;
            }
            if (json.utgt != 0)
            {
                this.flags |= SkillFlags.EnableUnitLockTarget;
            }
            if (json.ctbreak != 0)
            {
                this.flags |= SkillFlags.CastBreak;
            }
            if (json.mpatk != 0)
            {
                this.flags |= SkillFlags.JewelAttack;
            }
            if (json.fhit != 0)
            {
                this.flags |= SkillFlags.ForceHit;
            }
            if (json.suicide != 0)
            {
                this.flags |= SkillFlags.Suicide;
            }
            this.hp_cost          = (OInt)json.hp_cost;
            this.hp_cost_rate     = (OInt)Math.Min(Math.Max(json.hp_cost_rate, 0), 100);
            this.random_hit_rate  = (OInt)json.rhit;
            this.effect_type      = (SkillEffectTypes)json.eff_type;
            this.effect_calc      = (SkillParamCalcTypes)json.eff_calc;
            this.effect_rate      = new SkillRankUpValue();
            this.effect_rate.ini  = (OInt)json.eff_rate_ini;
            this.effect_rate.max  = (OInt)json.eff_rate_max;
            this.effect_value     = new SkillRankUpValue();
            this.effect_value.ini = (OInt)json.eff_val_ini;
            this.effect_value.max = (OInt)json.eff_val_max;
            this.effect_range     = new SkillRankUpValue();
            this.effect_range.ini = (OInt)json.eff_range_ini;
            this.effect_range.max = (OInt)json.eff_range_max;
            this.effect_hprate    = (OInt)json.eff_hprate;
            this.effect_mprate    = (OInt)json.eff_mprate;
            this.effect_dead_rate = (OInt)json.eff_durate;
            this.effect_lvrate    = (OInt)json.eff_lvrate;
            this.attack_type      = (AttackTypes)json.atk_type;
            this.attack_detail    = (AttackDetailTypes)json.atk_det;
            this.element_type     = (EElement)json.elem;
            this.element_value    = (SkillRankUpValue)null;
            if (this.element_type != EElement.None)
            {
                this.element_value     = new SkillRankUpValue();
                this.element_value.ini = (OInt)json.elem_ini;
                this.element_value.max = (OInt)json.elem_max;
            }
            this.cast_type  = (ECastTypes)json.ct_type;
            this.cast_speed = (SkillRankUpValue)null;
            if (this.type == ESkillType.Skill && (json.ct_spd_ini != 0 || json.ct_spd_max != 0))
            {
                this.cast_speed     = new SkillRankUpValue();
                this.cast_speed.ini = (OInt)json.ct_spd_ini;
                this.cast_speed.max = (OInt)json.ct_spd_max;
            }
            this.absorb_damage_rate   = (OInt)json.abs_d_rate;
            this.reaction_damage_type = (DamageTypes)json.react_d_type;
            this.reaction_det_lists.Clear();
            if (json.react_dets != null)
            {
                foreach (AttackDetailTypes reactDet in json.react_dets)
                {
                    this.reaction_det_lists.Add(reactDet);
                }
            }
            if (this.reaction_damage_type != DamageTypes.None)
            {
                this.control_damage_value     = new SkillRankUpValue();
                this.control_damage_value.ini = (OInt)json.ctrl_d_ini;
                this.control_damage_value.max = (OInt)json.ctrl_d_max;
                this.control_damage_calc      = (SkillParamCalcTypes)json.ctrl_d_calc;
            }
            this.control_ct_rate  = (SkillRankUpValue)null;
            this.control_ct_value = (SkillRankUpValue)null;
            if (this.control_ct_calc == SkillParamCalcTypes.Fixed || json.ct_val_ini != 0 || json.ct_val_max != 0)
            {
                this.control_ct_rate      = new SkillRankUpValue();
                this.control_ct_rate.ini  = (OInt)json.ct_rate_ini;
                this.control_ct_rate.max  = (OInt)json.ct_rate_max;
                this.control_ct_value     = new SkillRankUpValue();
                this.control_ct_value.ini = (OInt)json.ct_val_ini;
                this.control_ct_value.max = (OInt)json.ct_val_max;
                this.control_ct_calc      = (SkillParamCalcTypes)json.ct_calc;
            }
            this.target_buff_iname  = json.t_buff;
            this.target_cond_iname  = json.t_cond;
            this.self_buff_iname    = json.s_buff;
            this.self_cond_iname    = json.s_cond;
            this.shield_type        = (ShieldTypes)json.shield_type;
            this.shield_damage_type = (DamageTypes)json.shield_d_type;
            this.shield_turn        = (SkillRankUpValue)null;
            this.shield_value       = (SkillRankUpValue)null;
            if (this.shield_type != ShieldTypes.None && this.shield_damage_type != DamageTypes.None)
            {
                this.shield_turn      = new SkillRankUpValue();
                this.shield_turn.ini  = (OInt)json.shield_turn_ini;
                this.shield_turn.max  = (OInt)json.shield_turn_max;
                this.shield_value     = new SkillRankUpValue();
                this.shield_value.ini = (OInt)json.shield_ini;
                this.shield_value.max = (OInt)json.shield_max;
            }
            SkillEffectTypes effectType = this.effect_type;

            switch (effectType)
            {
            case SkillEffectTypes.Teleport:
            case SkillEffectTypes.Changing:
            case SkillEffectTypes.Throw:
                this.scope        = (OInt)0;
                this.select_scope = ESelectType.Cross;
                break;

            case SkillEffectTypes.RateDamage:
                if (this.attack_type == AttackTypes.None)
                {
                    this.attack_type = AttackTypes.PhyAttack;
                    break;
                }
                break;

            default:
                if (effectType == SkillEffectTypes.Attack || effectType == SkillEffectTypes.ReflectDamage)
                {
                    goto case SkillEffectTypes.RateDamage;
                }
                else
                {
                    break;
                }
            }
            if (this.select_range == ESelectType.Laser)
            {
                this.select_scope = ESelectType.Laser;
                this.scope        = (OInt)Math.Max((int)this.scope, 1);
            }
            else
            {
                switch (this.select_range)
                {
                case ESelectType.LaserSpread:
                    this.select_scope = ESelectType.LaserSpread;
                    break;

                case ESelectType.LaserWide:
                    this.select_scope = ESelectType.LaserWide;
                    break;

                case ESelectType.LaserTwin:
                    this.select_scope = ESelectType.LaserTwin;
                    break;

                case ESelectType.LaserTriple:
                    this.select_scope = ESelectType.LaserTriple;
                    break;
                }
                switch (this.select_scope)
                {
                case ESelectType.LaserSpread:
                case ESelectType.LaserWide:
                case ESelectType.LaserTwin:
                case ESelectType.LaserTriple:
                    this.scope = (OInt)1;
                    break;
                }
            }
            return(true);
        }