[manual]molaria, Chaleria и для La2base
По просьбам сделал возможность брать малярию и халеру выше 1 лвл и для la2base Interlude:
1). в папке config залесть в script.cfg и вставить снизу там где custom: custom/q8009_HotSpringsBuffs/__init__.py
должно получиться вот так:
# Custom
custom/3995_echo/__init__.py
custom/4000_ShadowWeapons/__init__.py
custom/7000_HeroItems/__init__.py
custom/8000_RaidbossInfo/__init__.py
custom/8001_NpcLocationInfo/__init__.py
custom/6050_KetraOrcSupport/__init__.py
custom/6051_VarkaSilenosSupport/__init__.py
custom/q8009_HotSpringsBuffs/__init__.py <------------это
2). Создать папку в data\scripts\custom\ q8009_HotSpringsBuffs.
там же создать файл __init__.py и вставить:
import sys
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j.gameserver.model import L2Effect
from net.sf.l2j.util import Rnd
from java.lang import System
qn = "q8009_HotSpringsBuffs"
HSMOBS = [21316, 21321, 21314, 21319]
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAttack (self,npc,player,damage,isPet):
npcId = npc.getNpcId()
if npcId in HSMOBS:
if (Rnd.get(100) < 50):
if player.getFirstEffect(int(4552)):
holera = player.getFirstEffect(int(4552)).getLevel()
if (Rnd.get(100) < 30):
if holera < 10:
newholera = int(holera + 1)
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4552,newholera))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4552,1))
else:
if player.getFirstEffect(int(4554)):
malaria = player.getFirstEffect(int(4554)).getLevel()
if (Rnd.get(100) < 15):
if malaria < 10:
newmalaria = int(malaria + 1)
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4554,newmalaria))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4554,1))
return
QUEST = Quest(8009,qn,"custom")
for i in HSMOBS:
QUEST.addAttackId(i)
3).Правка самих скилов в data\stat\skills в файле 4500-4599:
Ищем Id 4554 (Molaria) меняем всё на:
<skill id="4554" levels="10" name="Hot Springs Malaria">
<table name="#Tab-mAtkSpd"> 1.04 1.08 1.12 1.16 1.08 1 1 1 1 1 </table>
<table name="#MpConsumeRate"> 1 0.96 0.96 0.96 0.92 0.92 0.92 0.88 0.88 0.84 </table>
<set name="mpConsume" val="55"/>
<set name="power" val="200"/>
<set name="target" val="TARGET_ONE"/>
<set name="hitTime" val="1"/>
<set name="skillType" val="BUFF"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="castRange" val="600"/>
<set name="effectRange" val="900"/>
<for>
<effect count="900" name="DamOverTime" time="4" val="0" abnormal="poison">
<mul order="0x40" stat="mAtkSpd" val="#Tab-mAtkSpd"/>
<mul order="0x40" stat="MpConsumeRate" val="#MpConsumeRate"/>
</effect>
</for>
</skill>
Теперь Id 4552 (Cholera) меняем всё на:
<skill id="4552" levels="10" name="Hot Springs Cholera">
<table name="#Tab-rEvas"> 0 3 3 3 5 5 5 8 8 10 </table>
<table name="#Tab-accCombat"> 3 6 8 10 6 0 0 0 0 0 </table>
<set name="mpConsume" val="69"/>
<set name="power" val="200"/>
<set name="target" val="TARGET_ONE"/>
<set name="hitTime" val="1"/>
<set name="skillType" val="BUFF"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="castRange" val="600"/>
<set name="effectRange" val="900"/>
<for>
<effect count="900" name="DamOverTime" time="4" val="0" abnormal="poison">
<add order="0x40" stat="accCombat" val="#Tab-accCombat"/>
<sub order="0x40" stat="rEvas" val="#Tab-rEvas"/>
</effect>
</for>
</skill>
Вот и всё! Проблемы------>на личку. Не забываем про спасибо =) (всё для портала www.La2base.ru)

