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; } }
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); }
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); } } }
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); }
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); } } } } } }
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 }
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"]); } }
//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)); } }
void Start() { m_PlayerMovement = GetComponent <PlayerMovement>(); m_PlayerStance = GetComponent <PlayerStance>(); m_PlayerCombatHandler = GetComponent <PlayerCombatHandler>(); m_SkillHandler = GetComponent <SkillHandler>(); }
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) { } }
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; } } } }
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(); } }
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; } } }
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); } } }
/// <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); } }
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); } }
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>(); }
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; } }
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; } } }
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; } } } }
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."); } }
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(); }
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); }
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; } }
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); }