📄 l1character.java
字号:
/**
* キャラクターから、スキル效果のタイマーを削除する。 スキル效果は削除されない。
*
* @param skillId
* 削除するタイマーのスキルID
*/
public void killSkillEffectTimer(int skillId) {
L1SkillTimer timer = _skillEffect.remove(skillId);
if (timer != null) {
timer.kill();
}
}
/**
* キャラクターから、全てのスキル效果タイマーを削除する。スキル效果は削除されない。
*/
public void clearSkillEffectTimer() {
for (L1SkillTimer timer : _skillEffect.values()) {
if (timer != null) {
timer.kill();
}
}
_skillEffect.clear();
}
/**
* キャラクターに、スキル效果が掛かっているかを返す。
*
* @param skillId
* 調べる效果のスキルID。
* @return 魔法效果があればtrue、なければfalse。
*/
public boolean hasSkillEffect(int skillId) {
return _skillEffect.containsKey(skillId);
}
/**
* キャラクターのスキル效果の持続時間を返す。
*
* @param skillId
* 調べる效果のスキルID
* @return スキル效果の残り時間(秒)。スキルがかかっていないか效果時間が無限の場合、-1。
*/
public int getSkillEffectTimeSec(int skillId) {
L1SkillTimer timer = _skillEffect.get(skillId);
if (timer == null) {
return -1;
}
return timer.getRemainingTime();
}
private boolean _isSkillDelay = false;
/**
* キャラクターへ、スキルディレイを追加する。
*
* @param flag
*/
public void setSkillDelay(boolean flag) {
_isSkillDelay = flag;
}
/**
* キャラクターの毒状態を返す。
*
* @return スキルディレイ中か。
*/
public boolean isSkillDelay() {
return _isSkillDelay;
}
/**
* キャラクターへ、アイテムディレイを追加する。
*
* @param delayId
* アイテムディレイID。 通常のアイテムであれば0、インビジビリティ クローク、バルログ ブラッディ クロークであれば1。
* @param timer
* ディレイ時間を表す、L1ItemDelay.ItemDelayTimerオブジェクト。
*/
public void addItemDelay(int delayId, L1ItemDelay.ItemDelayTimer timer) {
_itemdelay.put(delayId, timer);
}
/**
* キャラクターから、アイテムディレイを削除する。
*
* @param delayId
* アイテムディレイID。 通常のアイテムであれば0、インビジビリティ クローク、バルログ ブラッディ クロークであれば1。
*/
public void removeItemDelay(int delayId) {
_itemdelay.remove(delayId);
}
/**
* キャラクターに、アイテムディレイがあるかを返す。
*
* @param delayId
* 調べるアイテムディレイID。 通常のアイテムであれば0、インビジビリティ クローク、バルログ ブラッディ
* クロークであれば1。
* @return アイテムディレイがあればtrue、なければfalse。
*/
public boolean hasItemDelay(int delayId) {
return _itemdelay.containsKey(delayId);
}
/**
* キャラクターのアイテムディレイ時間を表す、L1ItemDelay.ItemDelayTimerを返す。
*
* @param delayId
* 調べるアイテムディレイID。 通常のアイテムであれば0、インビジビリティ クローク、バルログ ブラッディ
* クロークであれば1。
* @return アイテムディレイ時間を表す、L1ItemDelay.ItemDelayTimer。
*/
public L1ItemDelay.ItemDelayTimer getItemDelayTimer(int delayId) {
return _itemdelay.get(delayId);
}
/**
* キャラクターへ、新たにペット、サモンモンスター、テイミングモンスター、あるいはクリエイトゾンビを追加する。
*
* @param npc
* 追加するNpcを表す、L1NpcInstanceオブジェクト。
*/
public void addPet(L1NpcInstance npc) {
_petlist.put(npc.getId(), npc);
}
/**
* キャラクターから、ペット、サモンモンスター、テイミングモンスター、あるいはクリエイトゾンビを削除する。
*
* @param npc
* 削除するNpcを表す、L1NpcInstanceオブジェクト。
*/
public void removePet(L1NpcInstance npc) {
_petlist.remove(npc.getId());
}
/**
* キャラクターのペットリストを返す。
*
* @return キャラクターのペットリストを表す、HashMapオブジェクト。このオブジェクトのKeyはオブジェクトID、ValueはL1NpcInstance。
*/
public Map<Integer, L1NpcInstance> getPetList() {
return _petlist;
}
/**
* キャラクターへマジックドールを追加する。
*
* @param doll
* 追加するdollを表す、L1DollInstanceオブジェクト。
*/
public void addDoll(L1DollInstance doll) {
_dolllist.put(doll.getId(), doll);
}
/**
* キャラクターからマジックドールを削除する。
*
* @param doll
* 削除するdollを表す、L1DollInstanceオブジェクト。
*/
public void removeDoll(L1DollInstance doll) {
_dolllist.remove(doll.getId());
}
/**
* キャラクターのマジックドールリストを返す。
*
* @return キャラクターの魔法人形リストを表す、HashMapオブジェクト。このオブジェクトのKeyはオブジェクトID、ValueはL1DollInstance。
*/
public Map<Integer, L1DollInstance> getDollList() {
return _dolllist;
}
/**
* キャラクターへ従者を追加する。
*
* @param follower
* 追加するfollowerを表す、L1FollowerInstanceオブジェクト。
*/
public void addFollower(L1FollowerInstance follower) {
_followerlist.put(follower.getId(), follower);
}
/**
* キャラクターから従者を削除する。
*
* @param follower
* 削除するfollowerを表す、L1FollowerInstanceオブジェクト。
*/
public void removeFollower(L1FollowerInstance follower) {
_followerlist.remove(follower.getId());
}
/**
* キャラクターの従者リストを返す。
*
* @return キャラクターの従者リストを表す、HashMapオブジェクト。このオブジェクトのKeyはオブジェクトID、ValueはL1FollowerInstance。
*/
public Map<Integer, L1FollowerInstance> getFollowerList() {
return _followerlist;
}
/**
* キャラクターへ、毒を追加する。
*
* @param poison
* 毒を表す、L1Poisonオブジェクト。
*/
public void setPoison(L1Poison poison) {
_poison = poison;
}
/**
* キャラクターの毒を治療する。
*/
public void curePoison() {
if (_poison == null) {
return;
}
_poison.cure();
}
/**
* キャラクターの毒状態を返す。
*
* @return キャラクターの毒を表す、L1Poisonオブジェクト。
*/
public L1Poison getPoison() {
return _poison;
}
/**
* キャラクターへ毒のエフェクトを付加する
*
* @param effectId
* @see S_Poison#S_Poison(int, int)
*/
public void setPoisonEffect(int effectId) {
broadcastPacket(new S_Poison(getId(), effectId));
}
/**
* キャラクターが存在する座標が、どのゾーンに属しているかを返す。
*
* @return 座標のゾーンを表す値。セーフティーゾーンであれば1、コンバットゾーンであれば-1、ノーマルゾーンであれば0。
*/
public int getZoneType() {
if (getMap().isSafetyZone(getLocation())) {
return 1;
} else if (getMap().isCombatZone(getLocation())) {
return -1;
} else { // ノーマルゾーン
return 0;
}
}
private int _exp; // ● 経験値
/**
* キャラクターが保持している経験値を返す。
*
* @return 経験値。
*/
public int getExp() {
return _exp;
}
/**
* キャラクターが保持する経験値を設定する。
*
* @param exp
* 経験値。
*/
public void setExp(int exp) {
_exp = exp;
}
// ■■■■■■■■■■ L1PcInstanceへ移動するプロパティ ■■■■■■■■■■
private final List<L1Object> _knownObjects = new CopyOnWriteArrayList<L1Object>();
private final List<L1PcInstance> _knownPlayer = new CopyOnWriteArrayList<L1PcInstance>();
/**
* 指定されたオブジェクトを、キャラクターが認識しているかを返す。
*
* @param obj
* 調べるオブジェクト。
* @return オブジェクトをキャラクターが認識していればtrue、していなければfalse。 自分自身に対してはfalseを返す。
*/
public boolean knownsObject(L1Object obj) {
return _knownObjects.contains(obj);
}
/**
* キャラクターが認識している全てのオブジェクトを返す。
*
* @return キャラクターが認識しているオブジェクトを表すL1Objectが格納されたArrayList。
*/
public List<L1Object> getKnownObjects() {
return _knownObjects;
}
/**
* キャラクターが認識している全てのプレイヤーを返す。
*
* @return キャラクターが認識しているオブジェクトを表すL1PcInstanceが格納されたArrayList。
*/
public List<L1PcInstance> getKnownPlayers() {
return _knownPlayer;
}
/**
* キャラクターに、新たに認識するオブジェクトを追加する。
*
* @param obj
* 新たに認識するオブジェクト。
*/
public void addKnownObject(L1Object obj) {
if (!_knownObjects.contains(obj)) {
_knownObjects.add(obj);
if (obj instanceof L1PcInstance) {
_knownPlayer.add((L1PcInstance) obj);
}
}
}
/**
* キャラクターから、認識しているオブジェクトを削除する。
*
* @param obj
* 削除するオブジェクト。
*/
public void removeKnownObject(L1Object obj) {
_knownObjects.remove(obj);
if (obj instanceof L1PcInstance) {
_knownPlayer.remove(obj);
}
}
/**
* キャラクターから、全ての認識しているオブジェクトを削除する。
*/
public void removeAllKnownObjects() {
_knownObjects.clear();
_knownPlayer.clear();
}
// ■■■■■■■■■■ プロパティ ■■■■■■■■■■
//TODO 實裝 牛 豬 雞 鴨 對話 by srwh
public static final byte STATE_IDLE = 0;
public static final byte STATE_RANDOM_WALK = 1;
public static final byte STATE_ATTACKING = 2;
public static final byte STATE_PICKUP_ITEM = 3;
private int _currentState; // 不明
public int get_currentState() {
return _currentState;
}
public void set_currentState(int i) {
_currentState = i;
}
//end
private String _name; // ● 名前
public String getName() {
return _name;
}
public void setName(String s) {
_name = s;
}
private int _level; // ● レベル
public synchronized int getLevel() {
return _level;
}
public synchronized void setLevel(long level) {
_level = (int) level;
}
private short _maxHp = 0; // ● MAXHP(1~32767)
private int _trueMaxHp = 0; // ● 本当のMAXHP
public short getMaxHp() {
return _maxHp;
}
public void setMaxHp(int hp) {
_trueMaxHp = hp;
_maxHp = (short) IntRange.ensure(_trueMaxHp, 1, 32767);
_currentHp = Math.min(_currentHp, _maxHp);
}
public void addMaxHp(int i) {
setMaxHp(_trueMaxHp + i);
}
private short _maxMp = 0; // ● MAXMP(0~32767)
private int _trueMaxMp = 0; // ● 本当のMAXMP
public short getMaxMp() {
return _maxMp;
}
public void setMaxMp(int mp) {
_trueMaxMp = mp;
_maxMp = (short) IntRange.ensure(_trueMaxMp, 0, 32767);
_currentMp = Math.min(_currentMp, _maxMp);
}
public void addMaxMp(int i) {
setMaxMp(_trueMaxMp + i);
}
private int _ac = 0; // ● AC(-128~127)
private int _trueAc = 0; // ● 本当のAC
public int getAc() {
return _ac;
}
public void setAc(int i) {
_trueAc = i;
_ac = IntRange.ensure(i, -128, 127);
}
public void addAc(int i) {
setAc(_trueAc + i);
}
private byte _str = 0; // ● STR(1~127)
private short _trueStr = 0; // ● 本当のSTR
public byte getStr() {
return _str;
}
public void setStr(int i) {
_trueStr = (short) i;
_str = (byte) IntRange.ensure(i, 1, 127);
}
public void addStr(int i) {
setStr(_trueStr + i);
}
private byte _con = 0; // ● CON(1~127)
private short _trueCon = 0; // ● 本当のCON
public byte getCon() {
return _con;
}
public void setCon(int i) {
_trueCon = (short) i;
_con = (byte) IntRange.ensure(i, 1, 127);
}
public void addCon(int i) {
setCon(_trueCon + i);
}
private byte _dex = 0; // ● DEX(1~127)
private short _trueDex = 0; // ● 本当のDEX
public byte getDex() {
return _dex;
}
public void setDex(int i) {
_trueDex = (short) i;
_dex = (byte) IntRange.ensure(i, 1, 127);
}
public void addDex(int i) {
setDex(_trueDex + i);
}
private byte _cha = 0; // ● CHA(1~127)
private short _trueCha = 0; // ● 本当のCHA
public byte getCha() {
return _cha;
}
public void setCha(int i) {
_trueCha = (short) i;
_cha = (byte) IntRange.ensure(i, 1, 127);
}
public void addCha(int i) {
setCha(_trueCha + i);
}
private byte _int = 0; // ● INT(1~127)
private short _trueInt = 0; // ● 本当のINT
public byte getInt() {
return _int;
}
public void setInt(int i) {
_trueInt = (short) i;
_int = (byte) IntRange.ensure(i, 1, 127);
}
public void addInt(int i) {
setInt(_trueInt + i);
}
private byte _wis = 0; // ● WIS(1~127)
private short _trueWis = 0; // ● 本当のWIS
public byte getWis() {
return _wis;
}
public void setWis(int i) {
_trueWis = (short) i;
_wis = (byte) IntRange.ensure(i, 1, 127);
}
public void addWis(int i) {
setWis(_trueWis + i);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -