Exemple #1
0
        private void handleItemOnNPC(Player player, Packet packet)
        {
            int interfaceId = packet.readInt();
            int slot        = packet.readLEShort();
            int npcIndex    = packet.readLEShort();
            int item        = packet.readLEShortA();

            if (npcIndex < 0 || npcIndex > Constants.MAX_NPCS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            Npc npc = Server.getNpcList()[npcIndex];

            if (npc == null || npc.isDestroyed())
            {
                return;
            }
            SkillHandler.resetAllSkills(player);
            player.getPackets().closeInterfaces();
            Console.WriteLine("Item on NPC " + npc.getId());
            if (player.getInventory().getItemInSlot(slot) == item)
            {
                switch (npc.getId())
                {
                case 519:                     // Bob
                    BrokenBarrows.talkToBob(player, npc, player.getInventory().getItemInSlot(slot), 0);
                    break;
                }
            }
        }
        public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
        {
            byte    level;
            ActorPC pc = (ActorPC)sActor;

            Tasks.PassiveSkillStatus ss;
            args.damage     = 0;
            args.isCritical = 0;
            level           = (byte)(args.skillID - baseID + 1);
            switch (SkillHandler.AddPassiveStatus(pc, "WhiteShortSwordMastery", 1, out ss, new PassiveSkillStatus.DeactivateFunc(Deactivate)))
            {
            case PassiveStatusAddResult.WeaponMissMatch:
                if (ss != null)
                {
                    BonusHandler.Instance.SkillAddAddition(pc, (uint)(baseID + ss.level - 1), true);
                }
                break;

            case PassiveStatusAddResult.Updated:
                BonusHandler.Instance.SkillAddAddition(pc, (uint)(baseID + ss.level - 1), true);
                BonusHandler.Instance.SkillAddAddition(pc, (uint)args.skillID, false);
                ss.level = level;
                break;

            case PassiveStatusAddResult.OK:
                ss.level = level;
                BonusHandler.Instance.SkillAddAddition(pc, (uint)args.skillID, false);
                break;
            }
        }
        private void handleFourthClickObject(Player player, Packet packet)
        {
            int    y  = packet.readLEShort();
            int    x  = packet.readLEShortA();
            ushort id = packet.readUShort();

            if (player.getTemporaryAttribute("unmovable") != null)
            {
                return;
            }
            if (x < 1000 || id < 0 || y < 1000 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            SkillHandler.resetAllSkills(player);
            player.getPackets().closeInterfaces();
            player.setFaceLocation(new Location(x, y, player.getLocation().getZ()));
            Console.WriteLine("Fourth object click = " + id + " " + x + " " + y);
            switch (id)
            {
            case 28089:             // GE desk
                Server.getGrandExchange().clickDesk(player, x, y, 3);
                break;
            }
        }
Exemple #4
0
 public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
 {
     if (sActor.type == ActorType.PC)
     {
         ActorPC pc = (ActorPC)sActor;
         if (!SkillHandler.CheckSkillSP(pc, args.skillID))
         {
             SkillHandler.SetSkillFailed(ref args);
             return;
         }
         SkillHandler.GainLP(pc, args.skillID);
     }
     args.damage     = 0;
     args.isCritical = SkillHandler.CalcCrit(sActor, dActor, args, SkillHandler.AttackType.Physical);
     if (args.isCritical != Map.SkillArgs.AttackResult.Miss && args.isCritical != Map.SkillArgs.AttackResult.Block)
     {
         ActorPC targetPC = (ActorPC)sActor;
         args.damage = CalcDamage(sActor, dActor, args);
     }
     if (args.damage <= 0)
     {
         args.damage = 1;
     }
     SkillHandler.PhysicalAttack(ref sActor, ref dActor, args.damage, SkillHandler.AttackElements.NEUTRAL, ref args);
 }
Exemple #5
0
 public void FinalizeDataHolder()
 {
     if ((Spell = SpellHandler.Get(SpellId)) == null)
     {
         ContentMgr.OnInvalidDBData("SpellId is invalid in " + this);
     }
     else if (RequiredSpellId != SpellId.None && SpellHandler.Get(RequiredSpellId) == null)
     {
         ContentMgr.OnInvalidDBData("RequiredSpellId is invalid in " + this);
     }
     else if (RequiredSkillId != SkillId.None && SkillHandler.Get(RequiredSkillId) == null)
     {
         ContentMgr.OnInvalidDBData("RequiredSkillId is invalid in " + this);
     }
     else
     {
         NPCEntry entry = NPCMgr.GetEntry(TrainerId);
         if (entry == null)
         {
             ContentMgr.OnInvalidDBData("TrainerId is invalid in " + this);
         }
         else
         {
             if (RequiredLevel == 0)
             {
                 RequiredLevel = Spell.Level;
             }
             if (entry.TrainerEntry == null)
             {
                 entry.TrainerEntry = new TrainerEntry();
             }
             entry.TrainerEntry.AddSpell(this);
         }
     }
 }
Exemple #6
0
        public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
        {
            ActorPC pc = (ActorPC)sActor;

            ActorEventHandlers.PC_EventHandler eh = (ActorEventHandlers.PC_EventHandler)pc.e;
            if (sActor.type == ActorType.PC)
            {
                if (!SkillHandler.CheckSkillSP(pc, args.skillID))
                {
                    SkillHandler.SetSkillFailed(ref args);
                    return;
                }
                args.damage     = 0;
                args.isCritical = Map.SkillArgs.AttackResult.Nodamage;// This skill is not for attacking
                byte level = (byte)(args.skillID - baseID + 1);
                SkillHandler.AddSkillEXP(ref pc, (uint)args.skillID, 3);
                if (!pc.Tasks.ContainsKey("ActDead"))
                {
                    Tasks.PassiveSkillStatus t = new SagaMap.Tasks.PassiveSkillStatus(level);
                    args.failed = true;
                    pc.Tasks.Add("ActDead", t);
                    SkillHandler.AddStatusIcon(pc, (uint)args.skillID, 0);
                }
                else
                {
                    args.failed = false;
                    pc.Tasks.Remove("ActDead");
                    SkillHandler.RemoveStatusIcon(pc, (uint)args.skillID);
                }
            }
        }
 public override GameObject Throw(Vector3 position, Vector3 direccion, SkillHandler handler, int owner, int team)
 {
     if (IceSkill2.municion[owner - 1] > 0)
     {
         Vector3 pos = new Vector3();
         if (m_directionOffset)
         {
             pos = new Vector3(position.x + direccion.x * m_positionOffset.x, m_positionOffset.y, position.z + direccion.z * m_positionOffset.z);
         }
         else
         {
             pos = new Vector3(position.x, m_positionOffset.y, position.z);
         }
         Instantiate(m_spawn, pos, this.transform.rotation);
         GameObject go = Instantiate(this.gameObject, pos, this.transform.rotation);
         go.GetComponent <IceSkill2>().m_handler   = handler;
         go.GetComponent <IceSkill2>().m_direccion = direccion;
         go.GetComponent <IceSkill2>().m_skillId   = Random.Range(0, 10000);
         go.GetComponent <IceSkill2>().m_owner     = owner;
         go.GetComponent <IceSkill2>().m_team      = team;
         IceSkill2.municion[owner - 1]--;
         return(go);
     }
     return(null);
 }
Exemple #8
0
 public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
 {
     if (sActor.type == ActorType.PC)
     {
         ActorPC pc = (ActorPC)sActor;
         if (!SkillHandler.CheckSkillSP(pc, args.skillID))
         {
             SkillHandler.SetSkillFailed(ref args);
             return;
         }
         args.damage     = 0;
         args.isCritical = SkillHandler.CalcCrit(sActor, dActor, args, SkillHandler.AttackType.Physical);
         if (args.isCritical != Map.SkillArgs.AttackResult.Miss && args.isCritical != Map.SkillArgs.AttackResult.Block)
         {
             if (dActor.type == ActorType.NPC)
             {
                 ActorNPC npc = (ActorNPC)dActor;
                 if (npc.npcType >= 10000 && npc.npcType < 50000)
                 {
                     Mob mob = (Mob)npc.e;
                     if (mob.Hate.ContainsKey(sActor.id))
                     {
                         mob.Hate[sActor.id] = 65535;
                     }
                     else
                     {
                         mob.Hate.Add(sActor.id, 65535);
                     }
                 }
             }
         }
     }
 }
Exemple #9
0
        public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
        {
            if (sActor.type == ActorType.PC)
            {
                ActorPC pc = (ActorPC)sActor;
                ActorEventHandlers.PC_EventHandler eh = (ActorEventHandlers.PC_EventHandler)pc.e;
                if (!SkillHandler.CheckSkillSP(pc, args.skillID))
                {
                    SkillHandler.SetSkillFailed(ref args);
                    return;
                }
                Mob mob = (Mob)dActor.e;
                args.damage     = 0;
                args.isCritical = Map.SkillArgs.AttackResult.Nodamage;// This skill is not for attacking
                if (!mob.Hate.ContainsKey(pc.id))
                {
                    SkillHandler.SetSkillFailed(ref args);
                    return;
                }
                SkillHandler.AddSkillEXP(ref pc, (uint)args.skillID, 3);
                ushort value = GetHateReduction(args);
                if (mob.Hate[pc.id] > value)
                {
                    mob.Hate[pc.id] -= (byte)value;
                }
                else
                {
                    mob.Hate[pc.id] = 0;
                }
            }

            //TODO:
            //20% Sadness status on enemy
        }
Exemple #10
0
        public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
        {
            ActorPC pc = (ActorPC)sActor;

            ActorEventHandlers.PC_EventHandler eh = (ActorEventHandlers.PC_EventHandler)pc.e;
            if (sActor.type == ActorType.PC)
            {
                if (!SkillHandler.CheckSkillSP(pc, args.skillID))
                {
                    SkillHandler.SetSkillFailed(ref args);
                    return;
                }
            }
            else//currently cannot be cast on player
            {
                args.damage     = 0;
                args.isCritical = Map.SkillArgs.AttackResult.Miss;
                args.failed     = false;
                return;
            }
            args.damage     = 0;
            args.isCritical = Map.SkillArgs.AttackResult.Nodamage; // This skill is not for attacking
            if (!pc.BattleStatus.Additions.ContainsKey("DefensiveStance"))
            {
                SkillHandler.ApplyAddition(pc, new Additions.Global.DefaultStance(args.skillID, pc, "DefensiveStance"));
                args.failed = true;
            }
            else
            {
                args.failed = false;
                SkillHandler.RemoveAddition(pc, pc.BattleStatus.Additions["DefensiveStance"]);
            }
        }
Exemple #11
0
        //09 0A
        public void OnItemToggle(SagaMap.Packets.Client.ItemToggle p)
        {
            if (this.state != SESSION_STATE.MAP_LOADED)
            {
                return;
            }

            Actor target;

            Map.SkillArgs args;
            Actor         sActor = (Actor)this.Char;
            int           id;
            byte          index = p.GetIndex();

            target = this.map.GetActor(p.GetTargetID());
            args   = new Map.SkillArgs(p.GetSkillType(), 0, p.GetSkillID(), p.GetTargetID(), 0);
            SkillHandler.CastSkill(ref sActor, ref target, ref args);
            Packets.Server.ItemActive packet = new SagaMap.Packets.Server.ItemActive();
            packet.SetSkillType(p.GetSkillType());
            packet.SetContainer(p.GetContainer());
            packet.SetIndex(p.GetIndex());
            packet.SetSkillID(p.GetSkillID());
            packet.SetSActor(this.Char.id);
            packet.SetDActor(p.GetTargetID());
            packet.SetValue(args.damage);
            this.netIO.SendPacket(packet, this.SessionID);;
            this.SendCharStatus(0);
            Item item = this.Char.inv.GetItem((CONTAINER_TYPE)p.GetContainer(), index);

            id = item.id;
            this.map.RemoveItemFromActorPC(this.Char, index, id, 1, ITEM_UPDATE_REASON.PURCHASED);
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest request,
            ILogger log)
        {
            try
            {
                SkillRequest skillRequest = await GetSkillRequestFromRequest(request);

                bool isValid = await RequestHandlerHelper.ValidateRequest(request, log, skillRequest);

                if (!isValid)
                {
                    return(new BadRequestResult());
                }

                ISkillHandler skillHandler = new SkillHandler(skillRequest.Request);
                return(await skillHandler.GetResultAsync());
            }
            catch (System.Exception e)
            {
                log.LogError(e.Message);

                string speechText = "Pouvez-vous répéter, j'ai mal compris.";

                SkillResponse response = ResponseBuilder.Ask(speechText, RequestHandlerHelper.GetDefaultReprompt());
                return(new OkObjectResult(response));
            }
        }
Exemple #13
0
 void Start()
 {
     m_PlayerMovement      = GetComponent <PlayerMovement>();
     m_PlayerStance        = GetComponent <PlayerStance>();
     m_PlayerCombatHandler = GetComponent <PlayerCombatHandler>();
     m_SkillHandler        = GetComponent <SkillHandler>();
 }
Exemple #14
0
 public static void Callback(Actor client)
 {
     try
     {
         Tasks.PassiveSkillStatus           ss;
         ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)client.e;
         ss = (PassiveSkillStatus)client.Tasks["VenomCoat"];
         if (ss.dueTime > 0)
         {
             if (client.type == ActorType.PC)
             {
                 eh.C.SendBattleStatus();
             }
             ss.dueTime--;
         }
         else
         {
             SkillHandler.RemoveStatusIcon(client, (uint)(1457400 + ss.level));
             client.BattleStatus.atkskill -= CalcDamage(ss.level);
             eh.C.SendBattleStatus();
             ss.Deactivate();
             client.Tasks.Remove("VenomCoat");
             ss = null;
         }
     }
     catch (Exception) { }
 }
Exemple #15
0
        private void handleRightClickOne(Player player, Packet packet)
        {
            int childId     = packet.readLEShort();
            int interfaceId = packet.readLEShort();
            int item        = packet.readLEShortA();
            int slot        = packet.readLEShortA();

            if (slot > 28 || slot < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            SkillHandler.resetAllSkills(player);
            if (player.getInventory().getItemInSlot(slot) == item)
            {
                player.getPackets().closeInterfaces();
                if (interfaceId == 149 && childId == 0)
                {
                    if (Herblore.emptyPotion(player, player.getInventory().getItemInSlot(slot), slot))
                    {
                        return;
                    }
                    else if (JewelleryTeleport.useJewellery(player, player.getInventory().getItemInSlot(slot), slot, false))
                    {
                        return;
                    }
                }
            }
        }
Exemple #16
0
        public static void LoadSpells(bool init)
        {
            if (!loaded)
            {
                InitEffectHandlers();
                LoadOtherDBCs();

                SpellEffect.InitMiscValueTypes();
                loaded = true;
                Spell.InitDbcs();
                new DBCReader <Spell.SpellDBCConverter>(RealmServerConfiguration.GetDBCFile(WCellConstants.DBC_SPELL));

                ContentMgr.Load <SpellLearnRelation>();
                InitSummonHandlers();
                SkillHandler.Initialize();
                TalentMgr.Initialize();

                SpellLines.InitSpellLines();

                ContentMgr.Load <SpellProcEventEntry>();
                ProcEventHelper.PatchSpells(ById);
            }

            if (init)
            {
                Initialize2();
            }
        }
Exemple #17
0
        private void handleRightClickTwo(Player player, Packet packet)
        {
            int childId     = packet.readLEShort();
            int interfaceId = packet.readLEShort();
            int slot        = packet.readLEShort();
            int item        = packet.readLEShort();

            if (slot < 0 || slot > 28 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            SkillHandler.resetAllSkills(player);
            if (player.getInventory().getItemInSlot(slot) == item)
            {
                player.getPackets().closeInterfaces();
                switch (player.getInventory().getItemInSlot(slot))
                {
                case 5509:                     // Small pouch.
                    player.getPackets().sendMessage("There is " + player.getSmallPouchAmount() + " Pure essence in your small pouch. (holds 3).");
                    break;

                case 5510:                     // Medium pouch.
                    player.getPackets().sendMessage("There is " + player.getMediumPouchAmount() + " Pure essence in your medium pouch. (holds 6).");
                    break;

                case 5512:                         // Large pouch.
                    player.getPackets().sendMessage("There is " + player.getLargePouchAmount() + " Pure essence in your large pouch. (holds 9).");
                    break;

                case 5514:                         // Giant pouch.
                    player.getPackets().sendMessage("There is " + player.getGiantPouchAmount() + " Pure essence in your giant pouch. (holds 12).");
                    break;
                }
            }
        }
Exemple #18
0
        public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
        {
            ActorPC pc = (ActorPC)sActor;

            ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e;
            if (sActor.type == ActorType.PC)
            {
                if (!SkillHandler.CheckSkillSP(pc, args.skillID))
                {
                    SkillHandler.SetSkillFailed(ref args);
                    return;
                }
                args.damage     = 0;
                args.isCritical = Map.SkillArgs.AttackResult.Heal;
                ActorPC targetPC;
                args.damage = CalcDamage(sActor, dActor, args);
                if (dActor.type == ActorType.PC)
                {
                    targetPC     = (ActorPC)dActor;
                    eh           = (SagaMap.ActorEventHandlers.PC_EventHandler)targetPC.e;
                    targetPC.HP += (ushort)args.damage;
                    eh.C.SendSkillEffect(SkillFactory.GetSkill((uint)args.skillID).addition, SkillEffects.HP, args.damage);
                    if (targetPC.HP > targetPC.maxHP)
                    {
                        targetPC.HP = targetPC.maxHP;
                    }
                    eh.C.SendCharStatus(0);
                }
            }
        }
Exemple #19
0
        /// <summary>
        /// If the client is dead, send back to the home point.
        /// If the type is 1, send back to a save point at the Cattleya's co=ords.
        /// Remove some durability from the items as a dying penalty.
        /// </summary>
        public void OnSendHomePoint(SagaMap.Packets.Client.SendHomePoint p)
        {
            if (this.state != SESSION_STATE.MAP_LOADED)
            {
                return;
            }
            if (this.Char.stance != Global.STANCE.DIE || this.Char.HP != 0)
            {
                return;
            }

            Pc.OnHomePoint();

            if (p.GetType() == 1 && this.map.CattleyaMapID != 0)
            {
                float z;
                if (this.map.HasHeightMap())
                {
                    z = this.map.GetHeight(this.map.CattleyaX, this.map.CattleyaY);
                }
                else
                {
                    z = this.map.CattleyaZ;
                }
                this.map.SendActorToMap(this.Char, (byte)this.map.CattleyaMapID, this.map.CattleyaX, this.map.CattleyaY, z);
                SkillHandler.EquiptLoseDurabilityOnDeath(this.Char);
            }
            else
            {
                this.map.SendActorToMap(this.Char, this.Char.save_map, this.Char.save_x, this.Char.save_y, this.Char.save_z);
            }
        }
Exemple #20
0
        public new void FinalizeDataHolder()
        {
            if ((Spell = SpellHandler.Get(SpellId)) == null)
            {
                ContentMgr.OnInvalidDBData("SpellId is invalid in " + this);
            }
            else if (RequiredSpellId != SpellId.None && SpellHandler.Get(RequiredSpellId) == null)
            {
                ContentMgr.OnInvalidDBData("RequiredSpellId is invalid in " + this);
            }
            else if (RequiredSkillId != SkillId.None && SkillHandler.Get(RequiredSkillId) == null)
            {
                ContentMgr.OnInvalidDBData("RequiredSkillId is invalid in " + this);
            }
            else
            {
                if (RequiredLevel == 0)
                {
                    RequiredLevel = Spell.Level;
                }

                if (!NPCMgr.TrainerSpellTemplates.ContainsKey(TrainerTemplateId))
                {
                    NPCMgr.TrainerSpellTemplates.Add(TrainerTemplateId, new List <TrainerSpellEntry>());
                }

                NPCMgr.TrainerSpellTemplates[TrainerTemplateId].Add(this);
            }
        }
Exemple #21
0
        public static void WriteAll()
        {
            DBSetup.Initialize();
            World.EnsureMapDataLoaded();
            SpellHandler.Initialize();
            FactionMgr.Initialize();
            SkillHandler.Initialize();
            TalentMgr.Initialize();

            WriteZoneEnum();
            WriteMapEnum();
            WriteSkillEnums();
            WriteRangeEnum();
            WriteFactionEnums();
            WriteSpellFocusEnum();
            WriteSpellId();
            WriteSpellMechanicEnum();
            WriteTalentEnums();
            WriteItemId();
            WriteItemSetId();
            WriteNpcId();
            WriteGOEntryId();
            WriteRealmCategory();

            NPCMgr.ForceInitialize();
            WriteRideEnum();
        }
 // Use this for initialization
 void Start()
 {
     m_playerStats  = GetComponent <PlayerStats>();
     m_controller   = GetComponent <FirstPersonController>();
     m_skillHandler = GetComponent <SkillHandler>();
     m_collider     = GetComponent <Collider>();
 }
Exemple #23
0
        public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
        {
            byte    level;
            ActorPC pc = (ActorPC)sActor;

            ActorEventHandlers.PC_EventHandler eh = (ActorEventHandlers.PC_EventHandler)pc.e;
            Tasks.PassiveSkillStatus           ss;
            level = (byte)(args.skillID - baseID + 1);

            switch (SkillHandler.AddPassiveStatus(pc, "MentalTraining", 3, out ss, new PassiveSkillStatus.DeactivateFunc(Deactivate)))
            {
            case PassiveStatusAddResult.WeaponMissMatch:
                if (ss != null)
                {
                    BonusHandler.Instance.SkillAddAddition(pc, (uint)(baseID + ss.level - 1), true);
                }
                break;

            case PassiveStatusAddResult.Updated:
                BonusHandler.Instance.SkillAddAddition(pc, (uint)(baseID + ss.level - 1), true);
                BonusHandler.Instance.SkillAddAddition(pc, (uint)args.skillID, false);
                ss.level = level;
                break;

            case PassiveStatusAddResult.OK:
                ss.level = level;
                BonusHandler.Instance.SkillAddAddition(pc, (uint)args.skillID, false);
                break;
            }
        }
Exemple #24
0
 public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
 {
     if (sActor.type == ActorType.PC)
     {
         ActorPC pc = (ActorPC)sActor;
         if (!SkillHandler.CheckSkillSP(pc, args.skillID))
         {
             SkillHandler.SetSkillFailed(ref args);
             return;
         }
         SkillHandler.GainLP(pc, args.skillID);
         args.damage     = 0;
         args.isCritical = SkillHandler.CalcCrit(sActor, dActor, args, SkillHandler.AttackType.Magical);
         if (args.isCritical != Map.SkillArgs.AttackResult.Miss && args.isCritical != Map.SkillArgs.AttackResult.Block)
         {
             uint MDamage;
             uint IceDamage;
             args.damage = CalcDamage(sActor, dActor, args);
             MDamage     = SkillHandler.MagicalAttack(ref sActor, ref dActor, args.damage, SkillHandler.AttackElements.NEUTRAL, ref args);
             args.damage = CalcIceDamage(sActor, dActor, args);
             IceDamage   = SkillHandler.MagicalAttack(ref sActor, ref dActor, args.damage, SkillHandler.AttackElements.ICE, ref args);
             args.damage = MDamage + IceDamage;
         }
     }
 }
Exemple #25
0
 public static void useLever(Player p, int id, Location leverLocation)
 {
     if (p.getTemporaryAttribute("teleporting") != null)
     {
         return;
     }
     foreach (LoadedLaddersAndStairs.Lever lever in LoadedLaddersAndStairs.levers)
     {
         if (lever.getId() == id)
         {
             if (lever.getLeverLocation().Equals(leverLocation))
             {
                 LoadedLaddersAndStairs.Lever l = lever;
                 //TODO when in use it cant be used (in use = lever is facing down)
                 CoordinateEvent useLeverCoordinateEvent = new CoordinateEvent(p, l.getLeverLocation());
                 useLeverCoordinateEvent.setAction(() =>
                 {
                     p.setFaceLocation(l.getFaceLocation());
                     if (p.getTemporaryAttribute("teleblocked") != null)
                     {
                         p.getPackets().sendMessage("A magical force prevents you from teleporting!");
                         return;
                     }
                     else if ((p.getTemporaryAttribute("teleporting") != null))
                     {
                         return;
                     }
                     p.setLastAnimation(new Animation(2140));
                     p.getPackets().closeInterfaces();
                     p.setTemporaryAttribute("teleporting", true);
                     p.getWalkingQueue().resetWalkingQueue();
                     p.getPackets().clearMapFlag();
                     SkillHandler.resetAllSkills(p);
                     l.setInUse(true);
                     Event useLeverEvent = new Event(700);
                     useLeverEvent.setAction(() =>
                     {
                         useLeverEvent.stop();
                         p.setLastAnimation(new Animation(8939, 0));
                         p.setLastGraphics(new Graphics(1576, 0));
                         l.setInUse(false);
                         Event setLeverTeleportEvent = new Event(1800);
                         setLeverTeleportEvent.setAction(() =>
                         {
                             setLeverTeleportEvent.stop();
                             p.teleport(l.getTeleLocation());
                             p.setLastAnimation(new Animation(8941, 0));
                             p.setLastGraphics(new Graphics(1577, 0));
                             Teleport.resetTeleport(p);
                         });
                         Server.registerEvent(setLeverTeleportEvent);
                     });
                     Server.registerEvent(useLeverEvent);
                 });
                 Server.registerCoordinateEvent(useLeverCoordinateEvent);
                 break;
             }
         }
     }
 }
Exemple #26
0
        private void handleOperateItem(Player player, Packet packet)
        {
            int item        = packet.readShortA();
            int slot        = packet.readLEShort();
            int interfaceId = packet.readLEShort();
            int childId     = packet.readLEShort();

            if (slot < 0 || slot > 13 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            ItemData.EQUIP equipSlot = (ItemData.EQUIP)slot;
            if (player.getEquipment().getItemInSlot(equipSlot) == item)
            {
                SkillHandler.resetAllSkills(player);
                player.getPackets().closeInterfaces();
                if (JewelleryTeleport.useJewellery(player, player.getEquipment().getItemInSlot(equipSlot), slot, true))
                {
                    return;
                }
                else
                if (equipSlot == ItemData.EQUIP.CAPE && Skillcape.emote(player))
                {
                    return;
                }
                player.getPackets().sendMessage("This item isn't operable.");
            }
        }
Exemple #27
0
 public override void AdditionEnd()
 {
     SkillHandler.RemoveAddition(this.AttachedActor, this, true);
     BonusHandler.Instance.SkillAddAddition(this.AttachedActor, (uint)this.skillID, true);
     SkillHandler.RemoveStatusIcon(this.AttachedActor, (uint)this.skillID);
     TimerEnd();
 }
Exemple #28
0
        private void handlePickupItem(Player player, Packet packet)
        {
            int      x  = packet.readLEShort();
            int      id = packet.readUShort();
            int      y  = packet.readLEShortA();
            Location l  = new Location(x, y, player.getLocation().getZ());

            SkillHandler.resetAllSkills(player);
            if (x < 1000 || y < 1000 | id < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            player.getPackets().closeInterfaces();
            if (player.getLocation().Equals(l))
            {
                Server.getGroundItems().pickupItem(player, id, player.getLocation());
                return;
            }
            CoordinateEvent pickupItemCoordinateEvent = new CoordinateEvent(player, l);

            pickupItemCoordinateEvent.setAction(() => {
                Server.getGroundItems().pickupItem(player, id, player.getLocation());
            });
            Server.registerCoordinateEvent(pickupItemCoordinateEvent);
        }
Exemple #29
0
        private void handleFourthClickNPC(Player player, Packet packet)
        {
            int npcIndex = packet.readUShort();

            if (npcIndex < 0 || npcIndex > Constants.MAX_NPCS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            Npc npc = Server.getNpcList()[npcIndex];

            if (npc == null || npc.isDestroyed())
            {
                return;
            }
            Console.WriteLine("Fourth click NPC " + npc.getId());
            SkillHandler.resetAllSkills(player);
            if (Slayer.openSlayerShop(player, npc))
            {
                return;
            }
            switch (npc.getId())
            {
            case 553:                 // Aubury
                HomeArea.interactWithAubury(player, npc, 3);
                break;
            }
        }
Exemple #30
0
 public static void Proc(ref Actor sActor, ref Actor dActor, ref Map.SkillArgs args)
 {
     if (sActor.type == ActorType.PC)
     {
         ActorPC pc = (ActorPC)sActor;
         ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)sActor.e;
         if (!SkillHandler.CheckSkillSP(pc, args.skillID) || pc.LP < 1)
         {
             SkillHandler.SetSkillFailed(ref args);
             return;
         }
         pc.LP -= 1;
         eh.C.SendCharStatus(0);
         Map map;
         if (dActor.mapID == 0)
         {
             if (dActor.type == ActorType.PC)
             {
                 eh           = (SagaMap.ActorEventHandlers.PC_EventHandler)dActor.e;
                 dActor.mapID = (byte)eh.C.map.ID;
             }
         }
         if (MapManager.Instance.GetMap(dActor.mapID, out map))
         {
             foreach (Actor actor in map.GetActorsArea(dActor, 500, true))
             {
                 Actor tmp = actor;
                 if (actor == sActor || actor.stance == Global.STANCE.DIE || actor.type != ActorType.NPC)
                 {
                     continue;
                 }
                 args.damage     = 0;
                 args.isCritical = SkillHandler.CalcCrit(sActor, actor, args, SkillHandler.AttackType.Physical);
                 ActorNPC npc = (ActorNPC)actor;
                 if (npc.npcType < 10000)
                 {
                     continue;
                 }
                 if (args.isCritical != Map.SkillArgs.AttackResult.Miss && args.isCritical != Map.SkillArgs.AttackResult.Block)
                 {
                     ActorPC targetPC = (ActorPC)sActor;
                     args.damage = CalcDamage(sActor, actor, args);
                 }
                 SkillHandler.PhysicalAttack(ref sActor, ref tmp, args.damage, SkillHandler.AttackElements.NEUTRAL, ref args);
                 if (actor != dActor)
                 {
                     args.targetActorID = actor.id;
                     map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, args, sActor, true);
                 }
             }
             args.targetActorID = dActor.id;
         }
         else
         {
             SkillHandler.SetSkillFailed(ref args);
             return;
         }
     }
 }
 protected override void Initialize()
 {
     methods = new Dictionary<uint, SkillHandler>();
     spells = new Dictionary<uint, Info>();
     PhysicalAttack = new SkillHandler(BasePhysicalAttack);
     MagicalAttack = new SkillHandler(MagicalAttack);
     RangedAttack = new SkillHandler(RangedAttack);
 }