示例#1
0
            public void SetQuality(RuneQuality quality)
            {
                Quality = quality;
                m_mods  = new List <HitData.DamageModPair>();
                switch (quality)
                {
                case RuneQuality.Common:
                    m_tooltip = "Pass through non-terrain objects\n+20% movement speed";
                    break;

                case RuneQuality.Ancient:
                    m_tooltip = "Pass through non-terrain objects\n+20% movement speed\nDeal 12 additional spirit damage on every attack";
                    break;

                case RuneQuality.Dark:
                    m_tooltip = "Pass through non-terrain objects\n+30% movement speed\nDeal 5 additional poison damage on every attack";
                    m_mods    = new List <HitData.DamageModPair>
                    {
                        new HitData.DamageModPair {
                            m_type = HitData.DamageType.Blunt, m_modifier = HitData.DamageModifier.Resistant
                        },
                        new HitData.DamageModPair {
                            m_type = HitData.DamageType.Pierce, m_modifier = HitData.DamageModifier.Resistant
                        },
                        new HitData.DamageModPair {
                            m_type = HitData.DamageType.Slash, m_modifier = HitData.DamageModifier.Resistant
                        }
                    };
                    break;
                }
            }
示例#2
0
		public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue )
		{
			if ( makersMark )
				Crafter = from;

			m_Quality = (RuneQuality)quality;

			return quality;
		}
示例#3
0
        public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
        {
            if (makersMark)
            {
                Crafter = from;
            }

            m_Quality = (RuneQuality)quality;

            return(quality);
        }
示例#4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_Crafter = reader.ReadMobile();
                m_Quality = (RuneQuality)reader.ReadEncodedInt();
                break;
            }
            }
        }
示例#5
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch( version )
			{
				case 0:
				{
					m_Crafter = reader.ReadMobile();
					m_Quality = (RuneQuality)reader.ReadEncodedInt();
					break;
				}
			}
		}
示例#6
0
            public void SetQuality(RuneQuality quality)
            {
                var lightEffect = ConstructGameObject(quality);

                m_startEffects.m_effectPrefabs = new EffectList.EffectData[] { new EffectList.EffectData {
                                                                                   m_prefab = lightEffect, m_enabled = true, m_attach = true
                                                                               } };
                TriggerStartEffects();
                if (quality == RuneQuality.Dark)
                {
                    var startInstance = m_startEffectInstances[0];
                    fireAura            = startInstance.AddComponent <FireAura>();
                    fireAura.m_ttl      = m_ttl - m_time;
                    fireAura.m_hitOwner = false;
                    fireAura.Setup(m_character, Vector3.zero, 0, null, null);
                }
            }
示例#7
0
 public Rune(long rune_id, long wizard_id, RuneLocation occupied_type, long occupied_id, byte slot_no, RuneColour rank, byte @class, RuneSet set_id, byte upgrade_limit, byte upgrade_curr,
             int sell_value, List <short> pri_eff, List <short> prefix_eff, List <List <short> > sec_eff, RuneQuality extra)
 {
     Id          = rune_id;
     SummonerId  = wizard_id;
     Location    = occupied_type;
     MonsterId   = occupied_id;
     Slot        = slot_no;
     Colour      = rank;
     Stars       = @class;
     Set         = set_id;
     MaxLevel    = upgrade_limit;
     Level       = upgrade_curr;
     SellValue   = sell_value;
     PrimaryStat = new RuneStat(pri_eff);
     PrefixStat  = new RuneStat(prefix_eff);
     Substats    = sec_eff.Select(stat => new RuneStat(stat)).ToList();
     Quality     = extra;
 }
示例#8
0
        public static GameObject ConstructGameObject(RuneQuality quality = RuneQuality.Common)
        {
            GameObject torchPrefab          = ZNetScene.instance.GetPrefab("Torch");
            GameObject effectPrefab         = torchPrefab.transform.Find("attach/equiped/flame")?.gameObject;
            GameObject modifiedEffectPrefab = GameObject.Instantiate(effectPrefab);
            GameObject result = new GameObject();

            result.AddComponent <ZNetView>();
            LightHover hoverEffect = result.AddComponent <LightHover>();

            if (quality == RuneQuality.Dark)
            {
                hoverEffect.loopTime            = 5f;
                hoverEffect.heightLoopTimeRatio = 0.9f;
            }

            modifiedEffectPrefab.SetActive(true);
            var light = modifiedEffectPrefab.AddComponent <Light>();

            light.enabled   = true;
            light.color     = new Color(1, 0.6f, 0.5f);
            light.range     = (quality == RuneQuality.Ancient ? 20 : 10);
            light.intensity = (quality == RuneQuality.Common ? 1.5f : 2);
            GameObject.DestroyImmediate(modifiedEffectPrefab.transform.Find("smoke (1)").gameObject);

            var numLights = 3f;
            var radius    = (quality == RuneQuality.Ancient ? 3f : 1.5f);

            for (int i = 0; i < numLights; i++)
            {
                var angle = (i / numLights) * 2 * Math.PI;
                var go    = GameObject.Instantiate(modifiedEffectPrefab);
                go.transform.SetParent(result.transform);
                go.transform.localPosition = new Vector3((float)(radius * Math.Cos(angle)), 0, (float)(radius * Math.Sin(angle)));
            }
            GameObject.Destroy(modifiedEffectPrefab);

            return(result);
        }
示例#9
0
        public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
        {
            Double bonus   = (Double)quality * 5;
            Double imbuing = from.Skills.Imbuing.Value / 4 + bonus;
            Double amount  = imbuing / 100.0 * (Double)this.MaxAmount;

            this.BaseAmount = (int)amount;

            if (this.BaseAmount == 0)
            {
                this.BaseAmount = 1;
            }

            if (makersMark)
            {
                Crafter = from;
            }

            m_Quality = (RuneQuality)quality;

            return(quality);
        }
示例#10
0
		public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue )
		{
			Double bonus = (Double)quality * 5;
			Double imbuing = from.Skills.Imbuing.Value / 4 + bonus;
			Double amount = imbuing / 100.0 * (Double)this.MaxAmount;

			this.BaseAmount = (int)amount;

			if ( this.BaseAmount == 0 )
				this.BaseAmount = 1;

			if ( makersMark )
				Crafter = from;

			m_Quality = (RuneQuality)quality;

			return quality;
		}