public override void onAction(L2Player player) { player.sendMessage(asString()); // TimeSpan ts = dtstart - DateTime.Now; // player.sendMessage("timems "+(ts.TotalMilliseconds)); bool newtarget = false; if (player.CurrentTarget == null) { player.CurrentTarget = this; newtarget = true; } else { if (player.CurrentTarget.ObjID != this.ObjID) { player.CurrentTarget = this; newtarget = true; } } if (newtarget) { player.sendPacket(new MyTargetSelected(ObjID, player.Level - Template.Level)); StatusUpdate su = new StatusUpdate(ObjID); su.add(StatusUpdate.CUR_HP, (int)CurHP); su.add(StatusUpdate.MAX_HP, (int)CharacterStat.getStat(TEffectType.b_max_hp)); player.sendPacket(su); } else { player.AICharacter.Attack(this); } }
public override void OnStopMoving(L2Player player) { player.CharacterStat.SpecBonusEvasion -= value; StatusUpdate su = new StatusUpdate(player.ObjID); su.add(StatusUpdate.EVASION, (int)player.CharacterStat.getStat(TEffectType.b_evasion)); player.sendPacket(su); }
protected internal override void use(L2Player admin, string alias) { //healthy -- восстанавливает выбранному чару хп\мп L2Player target; if (admin.CurrentTarget != null && admin.CurrentTarget is L2Player) { target = (L2Player)admin.CurrentTarget; } else { target = admin; } double hpval = target.CharacterStat.getStat(TEffectType.b_max_hp) - target.CurHP; double mpval = target.CharacterStat.getStat(TEffectType.b_max_mp) - target.CurMP; target.CurHP += hpval; target.CurMP += mpval; StatusUpdate su = new StatusUpdate(target.ObjID); su.add(StatusUpdate.CUR_HP, (int)target.CurHP); su.add(StatusUpdate.CUR_MP, (int)target.CurMP); target.sendPacket(su); SystemMessage sm = new SystemMessage(1067); //$s2 HP has been restored by $s1. sm.addPlayerName(admin.Name); sm.addNumber((int)hpval); target.sendPacket(sm); sm = new SystemMessage(1069); //$s2 MP has been restored by $s1. sm.addPlayerName(admin.Name); sm.addNumber((int)mpval); target.sendPacket(sm); }
public override void run() { L2Player player = Client.CurrentPlayer; if (player._recipeBook == null) { //The recipe is incorrect. player.sendSystemMessage(852); player.sendActionFailed(); return; } L2Recipe rec = null; foreach (L2Recipe r in player._recipeBook) { if (r.RecipeID == _id) { rec = r; break; } } if (rec == null) { //The recipe is incorrect. player.sendSystemMessage(852); player.sendActionFailed(); return; } if (player.CurMP < rec._mp_consume) { player.sendSystemMessage(24); //Not enough MP. player.sendActionFailed(); return; } bool next = true; if (rec._iscommonrecipe == 0) { next = player.p_create_item >= rec._level; } else { next = player.p_create_common_item >= rec._level; } if (!next) { player.sendSystemMessage(404); //Your Create Item level is too low to register this recipe. player.sendActionFailed(); return; } foreach (recipe_item_entry material in rec._materials) { long count = player.Inventory.getItemCount(material.item.ItemID); if (count < material.count) { //You are missing $s2 $s1 required to create that. SystemMessage sm = new SystemMessage(854); sm.addItemName(material.item.ItemID); sm.addItemCount(material.count - count); player.sendPacket(sm); player.sendActionFailed(); return; } } player.CurMP -= rec._mp_consume; StatusUpdate su = new StatusUpdate(player.ObjID); su.add(StatusUpdate.CUR_MP, (int)player.CurMP); player.sendPacket(su); foreach (recipe_item_entry material in rec._materials) { player.Inventory.destroyItem(material.item.ItemID, material.count, true, true); } if (rec._success_rate < 100) { if (new Random().Next(0, 100) > rec._success_rate) { player.sendPacket(new RecipeItemMakeInfo(player, rec, 0)); player.sendActionFailed(); return; } } foreach (recipe_item_entry prod in rec._products) { // if(prod.rate == 100) player.Inventory.addItem(prod.item, prod.count, 0, true, true); // else } player.sendPacket(new RecipeItemMakeInfo(player, rec, 1)); }
public override void run() { L2Player player = getClient().CurrentPlayer; SortedList <int, TAcquireSkill> seq = player.ActiveSkillTree; if (seq == null || !seq.ContainsKey(_id)) { player.sendActionFailed(); return; } TAcquireSkill e = seq[_id]; if (e.lv != _level) { player.sendActionFailed(); return; } if (e.lv_up_sp > player.SP) { player.sendSystemMessage(278); //You do not have enough SP to learn this skill. player.sendActionFailed(); return; } if (e.itemid > 0) { if (!player.hasItem(e.itemid, e.itemcount)) { player.sendSystemMessage(276); //You do not have the necessary materials or prerequisites to learn this skill. player.sendActionFailed(); return; } } if (e.lv_up_sp > 0) { player.SP -= e.lv_up_sp; StatusUpdate su = new StatusUpdate(player.ObjID); su.add(StatusUpdate.SP, player.SP); player.sendPacket(su); } player.Inventory.destroyItem(e.itemid, e.itemcount, true, true); TSkill skill = TSkillTable.getInstance().get(e.id, e.lv); if (skill != null) { player.addSkill(skill, true, true); } else { player.sendMessage("failed to learn null skill"); player.sendActionFailed(); return; } if (_level > 1) { bool upd = false; lock (player._shortcuts) { foreach (L2Shortcut sc in player._shortcuts) { if (sc.Type == L2Shortcut.TYPE_SKILL && sc.Id == _id) { sc.Level = _level; upd = true; } } } if (upd) { player.sendPacket(new ShortCutInit(player)); } } player.ActiveSkillTree.Remove(_id); player.FolkNpc.showAvailRegularSkills(player, true); }