123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package com.gmail.nossr50.skills;
- import org.bukkit.entity.AnimalTamer;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Wolf;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import com.gmail.nossr50.Combat;
- import com.gmail.nossr50.ItemChecks;
- import com.gmail.nossr50.Users;
- import com.gmail.nossr50.m;
- import com.gmail.nossr50.mcMMO;
- import com.gmail.nossr50.mcPermissions;
- import com.gmail.nossr50.datatypes.PlayerProfile;
- import com.gmail.nossr50.datatypes.SkillType;
- import com.gmail.nossr50.locale.mcLocale;
- import com.gmail.nossr50.party.Party;
- public class Swords {
- /**
- * Check for Bleed effect.
- *
- * @param attacker The attacking player
- * @param entity The defending entity
- * @param plugin mcMMO plugin instance
- */
- public static void bleedCheck(Player attacker, LivingEntity entity, mcMMO plugin) {
- if (entity instanceof Wolf) {
- Wolf wolf = (Wolf) entity;
- if (wolf.isTamed()) {
- AnimalTamer tamer = wolf.getOwner();
- if (tamer instanceof Player) {
- Player owner = (Player) tamer;
- if (owner == attacker || Party.getInstance().inSameParty(attacker, owner)) {
- return;
- }
- }
- }
- }
- final int MAX_BONUS_LEVEL = 750;
- PlayerProfile PPa = Users.getProfile(attacker);
- int skillLevel = PPa.getSkillLevel(SkillType.SWORDS);
- int skillCheck = m.skillCheck(skillLevel, MAX_BONUS_LEVEL);
- if (Math.random() * 1000 <= skillCheck && !entity.isDead()) {
- if (entity instanceof Player) {
- Player target = (Player) entity;
- int bleedTicks;
- if (skillLevel >= 750) {
- bleedTicks = 3;
- }
- else {
- bleedTicks = 2;
- }
- Users.getProfile(target).addBleedTicks(bleedTicks);
- }
- else {
- plugin.misc.bleedQue.add(entity);
- }
- attacker.sendMessage(mcLocale.getString("Swords.EnemyBleeding"));
- }
- }
- /**
- * Counter-attack entities.
- *
- * @param event The event to modify
- */
- public static void counterAttackChecks(EntityDamageByEntityEvent event) {
- Entity attacker = event.getDamager();
- if (!(attacker instanceof LivingEntity)) {
- return;
- }
- Entity target = event.getEntity();
- if (target instanceof Player) {
- Player defender = (Player) target;
- PlayerProfile PPd = Users.getProfile(defender);
- if (ItemChecks.isSword(defender.getItemInHand()) && mcPermissions.getInstance().swords(defender)) {
- final int MAX_BONUS_LEVEL = 600;
- final int COUNTER_ATTACK_MODIFIER = 2;
- int skillLevel = PPd.getSkillLevel(SkillType.SWORDS);
- int skillCheck = m.skillCheck(skillLevel, MAX_BONUS_LEVEL);
- if (Math.random() * 2000 <= skillCheck) {
- Combat.dealDamage((LivingEntity) attacker, event.getDamage() / COUNTER_ATTACK_MODIFIER);
- defender.sendMessage(mcLocale.getString("Swords.CounterAttacked"));
- if (attacker instanceof Player) {
- ((Player) attacker).sendMessage(mcLocale.getString("Swords.HitByCounterAttack"));
- }
- }
- }
- }
- }
- }
|