protected internal override void DoRead() { var respawnPoints = Level.NEIGHBOURS8.Select(t => CurUser.pos + t).Where(p => Actor.FindChar(p) == null && (Level.passable[p] || Level.avoid[p])).ToList(); var nImages = Nimages; while (nImages > 0 && respawnPoints.Count > 0) { var index = pdsharp.utils.Random.Index(respawnPoints); var mob = new MirrorImage(); mob.Duplicate(CurUser); GameScene.Add(mob); WandOfBlink.Appear(mob, respawnPoints[index]); respawnPoints.Remove(index); nImages--; } if (nImages < Nimages) { SetKnown(); } Sample.Instance.Play(Assets.SND_READ); Invisibility.Dispel(); CurUser.SpendAndNext(TimeToRead); }
private void Mirage() { TeiravonMobile caster = (TeiravonMobile)this.ControlMaster; if (caster == null) { caster = (TeiravonMobile)this.SummonMaster; } if (caster == null) { return; } if (!caster.Warmode) { return; } MirrorImage.AddClone(caster); caster.FixedParticles(0x376A, 1, 14, 0x13B5, EffectLayer.Waist); caster.PlaySound(0x594); new Clone(caster).MoveToWorld(caster.Location, caster.Map); return; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); m_Caster = reader.ReadMobile(); MirrorImage.AddClone(m_Caster); }
/*public KonohaClone( Mobile caster): base( AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4 ) * { * KonohaClone( caster, 1,1, 15.0 ); * }*/ public KonohaClone(Mobile caster, int decalageX, int decalageY, double _time) : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4) { m_Caster = caster; m_decalX = decalageX; m_decalY = decalageY; Body = caster.Body; Hue = caster.Hue; Female = caster.Female; //Location = caster.Location; Name = caster.Name; NameHue = caster.NameHue; Title = caster.Title; Kills = caster.Kills; HairItemID = caster.HairItemID; HairHue = caster.HairHue; SpeechHue = caster.SpeechHue; EmoteHue = caster.EmoteHue; FacialHairItemID = caster.FacialHairItemID; FacialHairHue = caster.FacialHairHue; for (int i = 0; i < caster.Skills.Length; ++i) { Skills[i].Base = caster.Skills[i].Base; Skills[i].Cap = caster.Skills[i].Cap; } for (int i = 0; i < caster.Items.Count; i++) { AddItem(CloneItem(caster.Items[i])); } Warmode = caster.Warmode; Summoned = true; SummonMaster = caster; ControlOrder = OrderType.Stay; ControlTarget = caster; TimeSpan duration = TimeSpan.FromSeconds(_time); new UnsummonTimer(caster, this, duration).Start(); SummonEnd = DateTime.Now + duration; Location = caster.Location; Map = caster.Map; MirrorImage.AddClone(m_Caster); }
public override void Deserialize(IGenericReader reader) { base.Deserialize(reader); var version = reader.ReadEncodedInt(); m_Caster = reader.ReadEntity <Mobile>(); MirrorImage.AddClone(m_Caster); }
public void NinjitsuPower() { if (!m_HasSetSmokeBombs) { m_HasSetSmokeBombs = true; m_SmokeBombs = Utility.RandomMinMax(3, 5); } Spell spell = null; if (m_Mobile.Hidden) { GetHiddenNinjaMove(); } else if (0.2 > Utility.RandomDouble()) { if (m_Mobile.Debug) { m_Mobile.Say(995, "Casting Mirror Image"); } spell = new MirrorImage(m_Mobile, null); } else { GetNinjaMove(); } if (spell != null) { spell.Cast(); } if (DateTime.Now > m_NextShurikenThrow && m_Mobile.Combatant != null && m_Mobile.InRange(m_Mobile.Combatant, 12)) { if (m_Mobile.Debug) { m_Mobile.Say(995, "Throwing a shuriken"); } m_Mobile.Direction = m_Mobile.GetDirectionTo(m_Mobile.Combatant); if (m_Mobile.Body.IsHuman) { m_Mobile.Animate(m_Mobile.Mounted ? 26 : 9, 7, 1, true, false, 0); } m_Mobile.PlaySound(0x23A); m_Mobile.MovingEffect(m_Mobile.Combatant, 0x27AC, 1, 0, false, false); Timer.DelayCall(TimeSpan.FromSeconds(1), new TimerCallback(ShurikenDamage)); m_NextShurikenThrow = DateTime.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(15, 30)); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); MirrorImage mirror = target as MirrorImage; EditorGUILayout.Space(); if (GUILayout.Button("Set Native Size")) { mirror.SetNativeSize(); } }
public override void OnActionCombat() { if (Utility.Random(50) == 0) { MirrorImage.AddClone(this); new Clone(this).MoveToWorld(this.Location, this.Map); FixedParticles(0x3728, 9, 32, 0x13AF, EffectLayer.Waist); } base.OnActionCombat(); }
public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.3, 0.6) { m_Caster = caster; Body = caster.Body; Hue = caster.Hue; Female = caster.Female; Name = caster.Name; NameHue = caster.NameHue; Title = caster.Title; Kills = caster.Kills; HairItemID = caster.HairItemID; HairHue = caster.HairHue; FacialHairItemID = caster.FacialHairItemID; FacialHairHue = caster.FacialHairHue; SolidHueOverride = caster.SolidHueOverride; for (int i = 0; i < caster.Skills.Length; ++i) { Skills[i].Base = caster.Skills[i].Base; Skills[i].Cap = caster.Skills[i].Cap; } foreach (var item in caster.GetEquippedItems()) { AddItem(CloneItem(item)); } Warmode = true; Summoned = true; SummonMaster = caster; ControlOrder = OrderType.Follow; ControlTarget = caster; TimeSpan duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40); new UnsummonTimer(caster, this, duration).Start(); SummonEnd = DateTime.Now + duration; MirrorImage.AddClone(m_Caster); }
public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4) { m_Caster = caster; Body = caster.Body; Hue = caster.Hue; Female = caster.Female; Name = caster.Name; NameHue = caster.NameHue; Title = caster.Title; Kills = caster.Kills; HairItemID = caster.HairItemID; HairHue = caster.HairHue; FacialHairItemID = caster.FacialHairItemID; FacialHairHue = caster.FacialHairHue; for (int i = 0; i < caster.Skills.Length; ++i) { Skills[i].Base = caster.Skills[i].Base; Skills[i].Cap = caster.Skills[i].Cap; } for (int i = 0; i < caster.Items.Count; i++) { AddItem(CloneItem(caster.Items[i])); } Warmode = true; Summoned = true; SummonMaster = caster; ControlOrder = OrderType.Follow; ControlTarget = caster; TimeSpan duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40); SummonEnd = DateTime.UtcNow + duration; TimerRegistry.Register <BaseCreature>("UnsummonTimer", this, duration, c => c.Delete()); MirrorImage.AddClone(m_Caster); IgnoreMobiles = true; }
public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4) { this.m_Caster = caster; this.Body = caster.Body; this.Hue = caster.Hue; this.Female = caster.Female; this.Name = caster.Name; this.NameHue = caster.NameHue; this.Title = caster.Title; this.Kills = caster.Kills; this.HairItemID = caster.HairItemID; this.HairHue = caster.HairHue; this.FacialHairItemID = caster.FacialHairItemID; this.FacialHairHue = caster.FacialHairHue; for (int i = 0; i < caster.Skills.Length; ++i) { this.Skills[i].Base = caster.Skills[i].Base; this.Skills[i].Cap = caster.Skills[i].Cap; } for (int i = 0; i < caster.Items.Count; i++) { this.AddItem(this.CloneItem(caster.Items[i])); } this.Warmode = true; this.Summoned = true; this.SummonMaster = caster; this.ControlOrder = OrderType.Follow; this.ControlTarget = caster; TimeSpan duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40); new UnsummonTimer(caster, this, duration).Start(); this.SummonEnd = DateTime.Now + duration; MirrorImage.AddClone(this.m_Caster); }
public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None) { m_Caster = caster; Body = caster.Body; Hue = caster.Hue; Female = caster.Female; Name = caster.Name; NameHue = caster.NameHue; Title = caster.Title; Kills = caster.Kills; HairItemID = caster.HairItemID; HairHue = caster.HairHue; FacialHairItemID = caster.FacialHairItemID; FacialHairHue = caster.FacialHairHue; for (var i = 0; i < caster.Skills.Length; ++i) { Skills[i].Base = caster.Skills[i].Base; Skills[i].Cap = caster.Skills[i].Cap; } for (var i = 0; i < caster.Items.Count; i++) { AddItem(CloneItem(caster.Items[i])); } Warmode = true; Summoned = true; SummonMaster = caster; ControlOrder = OrderType.Follow; ControlTarget = caster; var duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40); new UnsummonTimer(caster, this, duration).Start(); SummonEnd = Core.Now + duration; MirrorImage.AddClone(m_Caster); }
public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4) { m_Caster = caster; Body = caster.Body; Hue = caster.Hue; Female = caster.Female; Name = caster.Name; NameHue = caster.NameHue; Fame = caster.Fame; Kills = caster.Kills; for (int i = 0; i < caster.Skills.Length; ++i) { Skills[i].Base = caster.Skills[i].Base; Skills[i].Cap = caster.Skills[i].Cap; } for (int i = 0; i < caster.Items.Count; i++) { AddItem(CloneItem((Item)caster.Items[i])); } AccessLevel = AccessLevel.Seer; Warmode = caster.Warmode; Summoned = true; SummonMaster = this; ControlOrder = OrderType.Follow; ControlTarget = caster; ControlSlots = 1; TimeSpan duration = TimeSpan.FromSeconds(45); new UnsummonTimer(caster, this, duration).Start(); SummonEnd = DateTime.Now + duration; MirrorImage.AddClone(m_Caster); }
void Start() { m_SqrMaxdistance = m_maxDistance * m_maxDistance; m_ReflectionTexture = new RenderTexture(m_TextureSize, m_TextureSize, 16); m_ReflectionTexture.name = "__HighQualityReflection" + GetInstanceID(); m_ReflectionTexture.isPowerOfTwo = true; m_ReflectionTexture.filterMode = FilterMode.Trilinear; m_ReflectionTexture.antiAliasing = (int)antiAlias; GameObject go = new GameObject("MirrorCam", typeof(Camera), typeof(FlareLayer)); reflectionCamera = go.GetComponent <Camera> (); go.hideFlags = HideFlags.HideAndDontSave; //mysky = go.AddComponent<Skybox> (); go.transform.SetParent(normalTrans); go.transform.localPosition = Vector3.zero; reflectionCamera.enabled = false; reflectionCamera.targetTexture = m_ReflectionTexture; reflectionCamera.cullingMask = ~(1 << 4) & m_ReflectLayers.value; reflectionCamera.layerCullSpherical = enableSelfCullingDistance; refT = reflectionCamera.transform; if (!enableSelfCullingDistance) { for (int i = 0, length = layerCullingDistances.Length; i < length; ++i) { layerCullingDistances [i] = 0; } } else { reflectionCamera.layerCullDistances = layerCullingDistances; } reflectionCamera.useOcclusionCulling = false; // #if UNITY_EDITOR // SetTexture (m_ReflectionTexture); // #else if (addPostProcessingComponent) { MirrorImage mi = go.AddComponent <MirrorImage> (); } SetTexture(m_ReflectionTexture); // #endif }
public override int Proc(Armor armor, Character attacker, Character defender, int damage) { var level = Math.Max(0, armor.level); if (pdsharp.utils.Random.Int(level / 2 + 6) < 5) { return(damage); } var respawnPoints = new List <int>(); for (var i = 0; i < Level.NEIGHBOURS8.Length; i++) { var p = defender.pos + Level.NEIGHBOURS8[i]; if (Actor.FindChar(p) == null && (Level.passable[p] || Level.avoid[p])) { respawnPoints.Add(p); } } if (respawnPoints.Count <= 0) { return(damage); } var mob = new MirrorImage(); mob.Duplicate((Hero)defender); GameScene.Add(mob); WandOfBlink.Appear(mob, pdsharp.utils.Random.Element(respawnPoints)); defender.Damage(pdsharp.utils.Random.IntRange(1, defender.HT / 6), this); //attacker CheckOwner(defender); return(damage); }
public JediMirage(Mobile caster) : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4) { m_Caster = caster; Body = caster.Body; Hue = caster.Hue; Female = caster.Female; Name = caster.Name; NameHue = caster.NameHue; Title = caster.Title; Kills = caster.Kills; HairItemID = caster.HairItemID; HairHue = caster.HairHue; FacialHairItemID = caster.FacialHairItemID; FacialHairHue = caster.FacialHairHue; for (int i = 0; i < caster.Skills.Length; ++i) { Skills[i].Base = caster.Skills[i].Base; Skills[i].Cap = caster.Skills[i].Cap; } for (int i = 0; i < caster.Items.Count; i++) { AddItem(JediMirageItem(caster.Items[i])); } Warmode = true; Summoned = true; SummonMaster = caster; int min = 60; int max = (int)(Server.Spells.Jedi.JediSpell.GetJediDamage(m_Caster)); if (max < min) { max = min; } int hits = Utility.RandomMinMax(min, max); SetHits(hits); SetDamage(1, 1); SetDamageType(ResistanceType.Physical, 100); SetResistance(ResistanceType.Physical, 20, 40); SetResistance(ResistanceType.Fire, 20, 40); SetResistance(ResistanceType.Cold, 20, 40); SetResistance(ResistanceType.Poison, 20, 40); Fame = 0; Karma = 0; VirtualArmor = 1; ControlSlots = 3; TimeSpan duration = TimeSpan.FromSeconds(Server.Spells.Jedi.JediSpell.GetJediDamage(m_Caster) / 2); new UnsummonTimer(caster, this, duration).Start(); SummonEnd = DateTime.Now + duration; MirrorImage.AddClone(m_Caster); }
private void AfterDeserialization() { MirrorImage.AddClone(_caster); }
private void OnEnable() { _mirrorImage = serializedObject.targetObject as MirrorImage; }
public override void OnAfterDelete() { MirrorImage.RemoveClone(m_Caster); base.OnAfterDelete(); }
private static CurrentSpell SwordMCommands(Player warrior) { ConsoleKeyInfo enter = new ConsoleKeyInfo(); Console.Clear(); var counter = 1; while (enter.Key != ConsoleKey.Enter) { if (enter.Key == ConsoleKey.DownArrow) { counter++; } else if (enter.Key == ConsoleKey.UpArrow) { counter--; } GameTitle.GetTitle(); string actionSelect = $"SELECT ACTION FOR {warrior.Name}"; string levelUpCrit = $"CRITICAL STRIKE-- LOSE THIS TURN AND HAVE 30% CHANCE FOR 2X CRITICAL STRIKE FOR EACH ACTION YOUR SWORDMASTER DOES UNTIL END OF GAME"; string mirrorImage = $"MIRROR IMAGE-- YOUR OPONENT LOSES 1 TURN, YOU DEAL {warrior.Damage} TO HIM, COOLDOWN: 3"; string bladeSlash = $"BLADESLASH-- DAMAGE:{warrior.Damage * 2} NO COOLDOWN"; string windFury = $"WINDFURY-- DAMAGE:{warrior.Damage * 5} COOLDOWN: 4"; Console.WriteLine("{0}", actionSelect); switch (counter) { case 1: Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0,2}", "-> " + levelUpCrit); Console.WriteLine("{0,2}", mirrorImage); Console.WriteLine("{0,2}", bladeSlash); Console.WriteLine("{0,2}", windFury); break; case 2: Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0,2}", levelUpCrit); Console.WriteLine("{0,2}", "-> " + mirrorImage); Console.WriteLine("{0,2}", bladeSlash); Console.WriteLine("{0,2}", windFury); break; case 3: Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0,2}", levelUpCrit); Console.WriteLine("{0,2}", mirrorImage); Console.WriteLine("{0,2}", "-> " + bladeSlash); Console.WriteLine("{0,2}", windFury); break; case 4: Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0,2}", levelUpCrit); Console.WriteLine("{0,2}", mirrorImage); Console.WriteLine("{0,2}", bladeSlash); Console.WriteLine("{0,2}", "-> " + windFury); break; default: if (counter == 5) { counter = 1; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0,2}", "-> " + levelUpCrit); Console.WriteLine("{0,2}", mirrorImage); Console.WriteLine("{0,2}", bladeSlash); Console.WriteLine("{0,2}", windFury); break; } else if (counter == 0) { counter = 4; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0,2}", levelUpCrit); Console.WriteLine("{0,2}", mirrorImage); Console.WriteLine("{0,2}", bladeSlash); Console.WriteLine("{0,2}", "-> " + windFury); break; } break; } enter = Console.ReadKey(); Console.Clear(); } var currentSpell = new CurrentSpell(); switch (counter) { case 1: var criticalStrike = new CriticalStrike(); currentSpell = criticalStrike.TurnOnCrit(warrior); break; case 2: var mirrorImage = new MirrorImage(); currentSpell = mirrorImage.GetMirrorImage(warrior); break; case 3: var slash = new BladeSlash(); currentSpell = slash.GetSlash(warrior); break; default: var windfury = new Windfury(); currentSpell = windfury.GetWindFury(warrior); break; } return(currentSpell); }