2013年5月15日 星期三

【Java教學】幻術師-疼痛的歡愉的研究


疼痛的歡愉效果:犧牲自己1/3的體力來攻擊敵人。

一般玩家使用這技能感覺好像無效.
實際上這技能有點類似騎士的反擊屏障,不過只能反彈傷害給單一玩家.

反彈傷害公式=(幻術師最大血量 - 幻術師剩餘血量)/5

假設:幻術師最大血量=6000 幻術師剩餘血量=1000 , 反彈傷害=(6000-1000)/5=1000

如果玩家被放到此技能,又跑去打施法者.就會受到 1000的傷害.(如果不打就沒事)
這技能如果在非變態服可能還好,如果在變態服反彈的傷害就很恐怖了....

以下是 疼痛歡愉 在L1PcInstance.java的程式碼: 改好的

    if(attacker.hasSkillEffect(JOY_OF_PAIN) && getId() != attacker.getId())
            {
          int nowDamage = getMaxHp() - getCurrentHp();
          if (nowDamage > 0) {
    //限制疼痛歡愉最大傷害
            if ((nowDamage/5) > Config.JOY_OF_PAIN_DMG){
                  nowDamage = Config.JOY_OF_PAIN_DMG * 5 ;
            }
          //
          if (attacker instanceof L1PcInstance) {
                L1PcInstance attackPc = (L1PcInstance) attacker;
                attackPc.sendPackets(new S_DoActionGFX(attackPc
                          .getId(), ActionCodes.ACTION_Damage));
                attackPc.broadcastPacket(new S_DoActionGFX(attackPc
                          .getId(), ActionCodes.ACTION_Damage));
                attackPc.receiveDamage(this, (int) (nowDamage / 5));
                attackPc.removeSkillEffect(JOY_OF_PAIN);//限定反彈一次傷害
          } else if (attacker instanceof L1NpcInstance) {
                L1NpcInstance attackNpc = (L1NpcInstance) attacker;
                attackNpc.broadcastPacket(new S_DoActionGFX(attackNpc
                          .getId(), ActionCodes.ACTION_Damage));
                attackNpc.receiveDamage(this, (int) (nowDamage / 5));
                attackNpc.removeSkillEffect(JOY_OF_PAIN);//限定反彈一次傷害
          }
    }
}

====================================================================
Config.java
找到:

public static int LV99_EXP;

在下面添加:

public static int JOY_OF_PAIN_DMG;//限制疼痛歡愉傷害

找到:

GLOBAL_CHAT_LEVEL = Short.parseShort(altSettings.getProperty("GlobalChatLevel", "30"));

在上面添加:

JOY_OF_PAIN_DMG = Integer.parseInt(altSettings.getProperty("JOY_OF_PAIN_DMG", "10"));//限制疼痛歡愉傷害

模擬器 \ config \ altsettings.properties

新增

#限制疼痛的歡愉最大傷害
JOY_OF_PAIN_DMG = 50



沒有留言:

張貼留言