Sync with L2jServer HighFive Jun 14th 2015.
This commit is contained in:
@ -336,9 +336,9 @@ public class CursedWeapon implements INamable
|
||||
|
||||
// Void Burst, Void Flow
|
||||
_player.addSkill(CommonSkill.VOID_BURST.getSkill(), false);
|
||||
_player.addTransformSkill(CommonSkill.VOID_BURST.getId());
|
||||
_player.addTransformSkill(CommonSkill.VOID_BURST.getSkill());
|
||||
_player.addSkill(CommonSkill.VOID_FLOW.getSkill(), false);
|
||||
_player.addTransformSkill(CommonSkill.VOID_FLOW.getId());
|
||||
_player.addTransformSkill(CommonSkill.VOID_FLOW.getSkill());
|
||||
_player.sendSkillList();
|
||||
}
|
||||
|
||||
|
@ -6071,14 +6071,18 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
}
|
||||
}
|
||||
// Notify AI
|
||||
if (skill.isBad() && !skill.hasEffectType(L2EffectType.HATE))
|
||||
if (skill.isBad() && (skill.getTargetType() != L2TargetType.SELF) && !skill.hasEffectType(L2EffectType.HATE))
|
||||
{
|
||||
for (L2Object target : targets)
|
||||
{
|
||||
if ((target instanceof L2Character) && ((L2Character) target).hasAI())
|
||||
if (target instanceof L2Character)
|
||||
{
|
||||
// notify target AI about the attack
|
||||
((L2Character) target).getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, this);
|
||||
final L2Character creature = (L2Character) target;
|
||||
if (creature.hasAI())
|
||||
{
|
||||
// notify target AI about the attack
|
||||
creature.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,6 @@ import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@ -37,6 +36,7 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.ConcurrentSkipListMap;
|
||||
@ -215,6 +215,7 @@ import com.l2jserver.gameserver.model.events.impl.character.player.mentoring.OnP
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.mentoring.OnPlayerMentorStatus;
|
||||
import com.l2jserver.gameserver.model.fishing.L2Fish;
|
||||
import com.l2jserver.gameserver.model.fishing.L2Fishing;
|
||||
import com.l2jserver.gameserver.model.holders.AdditionalSkillHolder;
|
||||
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
||||
import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
@ -521,6 +522,7 @@ public final class L2PcInstance extends L2Playable
|
||||
private long _offlineShopStart = 0;
|
||||
|
||||
private Transform _transformation;
|
||||
private volatile Map<Integer, Skill> _transformSkills;
|
||||
|
||||
/** The table containing all L2RecipeList of the L2PcInstance */
|
||||
private final Map<Integer, L2RecipeList> _dwarvenRecipeBook = new ConcurrentHashMap<>();
|
||||
@ -754,7 +756,6 @@ public final class L2PcInstance extends L2Playable
|
||||
private int _fishz = 0;
|
||||
private final static SkillHolder FISHING_SKILL = new SkillHolder(1312, 1);
|
||||
|
||||
private volatile Set<Integer> _transformAllowedSkills;
|
||||
private ScheduledFuture<?> _taskRentPet;
|
||||
private ScheduledFuture<?> _taskWater;
|
||||
|
||||
@ -7727,7 +7728,7 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
final TimeStamp t = getSkillReuseTimeStamp(skill.getReuseHashCode());
|
||||
statement.setLong(5, (t != null) && t.hasNotPassed() ? t.getReuse() : 0);
|
||||
statement.setDouble(6, (t != null) && t.hasNotPassed() ? t.getStamp() : 0);
|
||||
statement.setLong(6, (t != null) && t.hasNotPassed() ? t.getStamp() : 0);
|
||||
|
||||
statement.setInt(7, 0); // Store type 0, active buffs/debuffs.
|
||||
statement.setInt(8, getClassIndex());
|
||||
@ -7758,7 +7759,7 @@ public final class L2PcInstance extends L2Playable
|
||||
statement.setInt(3, t.getSkillLvl());
|
||||
statement.setInt(4, -1);
|
||||
statement.setLong(5, t.getReuse());
|
||||
statement.setDouble(6, t.getStamp());
|
||||
statement.setLong(6, t.getStamp());
|
||||
statement.setInt(7, 1); // Restore type 1, skill reuse.
|
||||
statement.setInt(8, getClassIndex());
|
||||
statement.setInt(9, ++buff_index);
|
||||
@ -7793,7 +7794,7 @@ public final class L2PcInstance extends L2Playable
|
||||
ps2.setInt(2, ts.getItemId());
|
||||
ps2.setInt(3, ts.getItemObjectId());
|
||||
ps2.setLong(4, ts.getReuse());
|
||||
ps2.setDouble(5, ts.getStamp());
|
||||
ps2.setLong(5, ts.getStamp());
|
||||
ps2.execute();
|
||||
}
|
||||
}
|
||||
@ -10228,7 +10229,7 @@ public final class L2PcInstance extends L2Playable
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((_transformation != null) && (!hasTransformSkill(s.getId()) && !s.allowOnTransform()))
|
||||
if ((_transformation != null) && !s.isPassive())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -10258,7 +10259,48 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
sl.addSkill(s.getDisplayId(), s.getDisplayLevel(), s.isPassive(), isDisabled, isEnchantable);
|
||||
}
|
||||
|
||||
if (_transformation != null)
|
||||
{
|
||||
Map<Integer, Integer> ts = new TreeMap<>();
|
||||
|
||||
for (SkillHolder holder : _transformation.getTemplate(this).getSkills())
|
||||
{
|
||||
ts.putIfAbsent(holder.getSkillId(), holder.getSkillLvl());
|
||||
|
||||
if (ts.get(holder.getSkillId()) < holder.getSkillLvl())
|
||||
{
|
||||
ts.put(holder.getSkillId(), holder.getSkillLvl());
|
||||
}
|
||||
addTransformSkill(holder.getSkill());
|
||||
}
|
||||
|
||||
for (AdditionalSkillHolder holder : _transformation.getTemplate(this).getAdditionalSkills())
|
||||
{
|
||||
if (getLevel() >= holder.getMinLevel())
|
||||
{
|
||||
ts.putIfAbsent(holder.getSkillId(), holder.getSkillLvl());
|
||||
if (ts.get(holder.getSkillId()) < holder.getSkillLvl())
|
||||
{
|
||||
ts.put(holder.getSkillId(), holder.getSkillLvl());
|
||||
}
|
||||
addTransformSkill(holder.getSkill());
|
||||
}
|
||||
}
|
||||
|
||||
// Add collection skills.
|
||||
for (L2SkillLearn skill : SkillTreesData.getInstance().getCollectSkillTree().values())
|
||||
{
|
||||
if (getKnownSkill(skill.getSkillId()) != null)
|
||||
{
|
||||
addTransformSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()));
|
||||
}
|
||||
}
|
||||
|
||||
for (Entry<Integer, Integer> transformSkill : ts.entrySet())
|
||||
{
|
||||
sl.addSkill(transformSkill.getKey(), transformSkill.getValue(), false, false, false);
|
||||
}
|
||||
}
|
||||
sendPacket(sl);
|
||||
}
|
||||
|
||||
@ -12857,29 +12899,34 @@ public final class L2PcInstance extends L2Playable
|
||||
}
|
||||
}
|
||||
|
||||
public void addTransformSkill(int id)
|
||||
public void addTransformSkill(Skill sk)
|
||||
{
|
||||
if (_transformAllowedSkills == null)
|
||||
if (_transformSkills == null)
|
||||
{
|
||||
synchronized (this)
|
||||
{
|
||||
if (_transformAllowedSkills == null)
|
||||
if (_transformSkills == null)
|
||||
{
|
||||
_transformAllowedSkills = new HashSet<>();
|
||||
_transformSkills = new HashMap<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
_transformAllowedSkills.add(id);
|
||||
_transformSkills.put(sk.getId(), sk);
|
||||
}
|
||||
|
||||
public Skill getTransformSkill(int id)
|
||||
{
|
||||
return _transformSkills.get(id);
|
||||
}
|
||||
|
||||
public boolean hasTransformSkill(int id)
|
||||
{
|
||||
return (_transformAllowedSkills != null) && _transformAllowedSkills.contains(id);
|
||||
return _transformSkills.containsKey(id);
|
||||
}
|
||||
|
||||
public synchronized void removeAllTransformSkills()
|
||||
{
|
||||
_transformAllowedSkills = null;
|
||||
_transformSkills = null;
|
||||
}
|
||||
|
||||
protected void startFeed(int npcId)
|
||||
|
@ -293,7 +293,7 @@ public class PcStatus extends PlayableStatus
|
||||
setCurrentHp(value);
|
||||
}
|
||||
|
||||
if (getActiveChar().getCurrentHp() < 0.5)
|
||||
if ((getActiveChar().getCurrentHp() < 0.5) && !isHPConsumption)
|
||||
{
|
||||
getActiveChar().abortAttack();
|
||||
getActiveChar().abortCast();
|
||||
|
@ -41,7 +41,7 @@ public final class NotifyAITask implements Runnable
|
||||
{
|
||||
if (_character != null)
|
||||
{
|
||||
_character.getAI().notifyEvent(_event, null);
|
||||
_character.getAI().notifyEvent(_event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.model.L2SkillLearn;
|
||||
import com.l2jserver.gameserver.model.StatsSet;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.holders.AdditionalItemHolder;
|
||||
@ -224,38 +223,6 @@ public final class Transform implements IIdentifiable
|
||||
player.getAppearance().setVisibleTitle(getTitle());
|
||||
}
|
||||
|
||||
// Add common skills.
|
||||
for (SkillHolder holder : template.getSkills())
|
||||
{
|
||||
if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
|
||||
{
|
||||
player.addSkill(holder.getSkill(), false);
|
||||
}
|
||||
player.addTransformSkill(holder.getSkillId());
|
||||
}
|
||||
|
||||
// Add skills depending on level.
|
||||
for (AdditionalSkillHolder holder : template.getAdditionalSkills())
|
||||
{
|
||||
if (player.getLevel() >= holder.getMinLevel())
|
||||
{
|
||||
if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
|
||||
{
|
||||
player.addSkill(holder.getSkill(), false);
|
||||
}
|
||||
player.addTransformSkill(holder.getSkillId());
|
||||
}
|
||||
}
|
||||
|
||||
// Add collection skills.
|
||||
for (L2SkillLearn skill : SkillTreesData.getInstance().getCollectSkillTree().values())
|
||||
{
|
||||
if (player.getKnownSkill(skill.getSkillId()) != null)
|
||||
{
|
||||
player.addTransformSkill(skill.getSkillId());
|
||||
}
|
||||
}
|
||||
|
||||
// Set inventory blocks if needed.
|
||||
if (!template.getAdditionalItems().isEmpty())
|
||||
{
|
||||
@ -376,7 +343,7 @@ public final class Transform implements IIdentifiable
|
||||
if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
|
||||
{
|
||||
player.addSkill(holder.getSkill(), false);
|
||||
player.addTransformSkill(holder.getSkillId());
|
||||
player.addTransformSkill(holder.getSkill());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import com.l2jserver.gameserver.instancemanager.ClanHallManager;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.model.L2World;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.itemcontainer.ItemContainer;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
|
||||
public class Auction
|
||||
@ -288,23 +289,37 @@ public class Auction
|
||||
}
|
||||
|
||||
/**
|
||||
* Return Item in WHC
|
||||
* @param Clan
|
||||
* @param quantity
|
||||
* @param penalty
|
||||
* Returns the item to the clan warehouse.
|
||||
* @param clanName the clan name
|
||||
* @param quantity the Adena value
|
||||
* @param penalty if {@code true} fees are applied
|
||||
*/
|
||||
private void returnItem(String Clan, long quantity, boolean penalty)
|
||||
private void returnItem(String clanName, long quantity, boolean penalty)
|
||||
{
|
||||
if (penalty)
|
||||
{
|
||||
quantity *= 0.9; // take 10% tax fee if needed
|
||||
}
|
||||
|
||||
final L2Clan clan = ClanTable.getInstance().getClanByName(clanName);
|
||||
if (clan == null)
|
||||
{
|
||||
_log.warning("Clan " + clanName + " doesn't exist!");
|
||||
return;
|
||||
}
|
||||
|
||||
final ItemContainer cwh = clan.getWarehouse();
|
||||
if (cwh == null)
|
||||
{
|
||||
_log.warning("There has been a problem with " + clanName + "'s clan warehouse!");
|
||||
return;
|
||||
}
|
||||
|
||||
// avoid overflow on return
|
||||
final long limit = MAX_ADENA - ClanTable.getInstance().getClanByName(Clan).getWarehouse().getAdena();
|
||||
final long limit = MAX_ADENA - cwh.getAdena();
|
||||
quantity = Math.min(quantity, limit);
|
||||
|
||||
ClanTable.getInstance().getClanByName(Clan).getWarehouse().addItem("Outbidded", ADENA_ID, quantity, null, null);
|
||||
cwh.addItem("Outbidded", ADENA_ID, quantity, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -92,6 +92,12 @@ public final class SiegableHall extends ClanHall
|
||||
{
|
||||
_nextSiege.setTimeInMillis(nextSiege);
|
||||
}
|
||||
|
||||
if (getOwnerId() != 0)
|
||||
{
|
||||
_isFree = false;
|
||||
loadFunctions();
|
||||
}
|
||||
}
|
||||
|
||||
public void spawnDoor()
|
||||
|
@ -459,11 +459,6 @@ public final class Skill implements IIdentifiable
|
||||
return _isSuicideAttack;
|
||||
}
|
||||
|
||||
public boolean allowOnTransform()
|
||||
{
|
||||
return isPassive();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the power of the skill.
|
||||
* @param activeChar
|
||||
|
@ -21,7 +21,6 @@ package com.l2jserver.gameserver.model.skills;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.l2jserver.gameserver.GeoData;
|
||||
@ -74,7 +73,7 @@ public class SkillChannelizer implements Runnable
|
||||
// Verify for same status.
|
||||
if (isChanneling())
|
||||
{
|
||||
_log.log(Level.WARNING, "Character: " + toString() + " is attempting to channel skill but he already does!");
|
||||
_log.warning("Character: " + _channelizer + " is attempting to channel skill but he already does!");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -88,7 +87,7 @@ public class SkillChannelizer implements Runnable
|
||||
// Verify for same status.
|
||||
if (!isChanneling())
|
||||
{
|
||||
_log.log(Level.WARNING, "Character: " + toString() + " is attempting to stop channel skill but he does not!");
|
||||
_log.warning("Character: " + _channelizer + " is attempting to stop channel skill but he does not!");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -153,7 +152,7 @@ public class SkillChannelizer implements Runnable
|
||||
final Skill baseSkill = SkillData.getInstance().getSkill(_skill.getChannelingSkillId(), 1);
|
||||
if (baseSkill == null)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": skill " + _skill + " couldn't find effect id skill: " + _skill.getChannelingSkillId() + " !");
|
||||
_log.warning(getClass().getSimpleName() + ": skill " + _skill + " couldn't find effect id skill: " + _skill.getChannelingSkillId() + " !");
|
||||
_channelizer.abortCast();
|
||||
return;
|
||||
}
|
||||
@ -196,7 +195,7 @@ public class SkillChannelizer implements Runnable
|
||||
final Skill skill = SkillData.getInstance().getSkill(_skill.getChannelingSkillId(), skillLevel);
|
||||
if (skill == null)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Non existent channeling skill requested: " + _skill);
|
||||
_log.warning(getClass().getSimpleName() + ": Non existent channeling skill requested: " + _skill);
|
||||
_channelizer.abortCast();
|
||||
return;
|
||||
}
|
||||
@ -229,7 +228,7 @@ public class SkillChannelizer implements Runnable
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.WARNING, "Error while channelizing skill: " + _skill + " channelizer: " + _channelizer + " channelized: " + _channelized, e);
|
||||
_log.warning("Error while channelizing skill: " + _skill + " channelizer: " + _channelizer + " channelized: " + _channelized + "; " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user