📄 magic.pas
字号:
boTrain:=True;
end;
if PlayObject.m_boAbilSeeHealGauge then
PlayObject.SendMsg(TargeTBaseObject,RM_10414,0,0,0,0,'');
end;
end;
SKILL_AMYOUNSUL{6}: begin //施毒术
boSpellFail:=True;
if PlayObject.IsProperTarget(TargeTBaseObject) then
begin
if CheckAmulet(PlayObject,1,2,nAmuletIdx) then
begin
StdItem:=UserEngine.GetStdItem(PlayObject.m_UseItems[nAmuletIdx].wIndex);
if StdItem <> nil then
begin
UseAmulet(PlayObject,1,2,nAmuletIdx);
if Random(TargeTBaseObject.m_btAntiPoison + 7) <= 6 then
begin
case StdItem.Shape of
1: begin
nPower:=GetPower13(40) + GetRPow(PlayObject.m_WAbil.SC) * 2;
TargeTBaseObject.SendDelayMsg(PlayObject,RM_POISON,POISON_DECHEALTH{中毒类型 - 绿毒},nPower,Integer(PlayObject),ROUND(UserMagic.btLevel / 3 * (nPower / g_Config.nAmyOunsulPoint)){UserMagic.btLevel},'',1000);
end;
2: begin
nPower:=GetPower13(30) + GetRPow(PlayObject.m_WAbil.SC) * 2;
TargeTBaseObject.SendDelayMsg(PlayObject,RM_POISON,POISON_DAMAGEARMOR{中毒类型 - 红毒},nPower,Integer(PlayObject),ROUND(UserMagic.btLevel / 3 * (nPower / g_Config.nAmyOunsulPoint)){UserMagic.btLevel},'',1000);
end;
end;
if (TargeTBaseObject.m_btRaceServer = RC_PLAYOBJECT) or (TargeTBaseObject.m_btRaceServer >= RC_ANIMAL) then
boTrain:=True;
end;
PlayObject.SetTargetCreat(TargeTBaseObject);
boSpellFail:=False;
end;
end;
end;
end;
SKILL_FIREWIND{8}: begin //抗拒火环
if MagPushArround(PlayObject,UserMagic.btLevel) > 0 then boTrain:=True;
end;
SKILL_FIRE{9}: begin //地狱火
n1C:=GetNextDirection(PlayObject.m_nCurrX,PlayObject.m_nCurrY,nTargetX,nTargetY);
if PlayObject.m_PEnvir.GetNextPosition(PlayObject.m_nCurrX,PlayObject.m_nCurrY,n1C,1,n14,n18) then
begin
PlayObject.m_PEnvir.GetNextPosition(PlayObject.m_nCurrX,PlayObject.m_nCurrY,n1C,5,nTargetX,nTargetY);
nPower:= PlayObject.GetAttackPower(GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC), SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1);
if PlayObject.MagPassThroughMagic(n14,n18,nTargetX,nTargetY,n1C,nPower,False) > 0 then
boTrain:=True;
end;
end;
SKILL_SHOOTLIGHTEN{10},51: begin //疾光电影
n1C:=GetNextDirection(PlayObject.m_nCurrX,PlayObject.m_nCurrY,nTargetX,nTargetY);
if PlayObject.m_PEnvir.GetNextPosition(PlayObject.m_nCurrX,PlayObject.m_nCurrY,n1C,1,n14,n18) then
begin
PlayObject.m_PEnvir.GetNextPosition(PlayObject.m_nCurrX,PlayObject.m_nCurrY,n1C,8,nTargetX,nTargetY);
nPower:= PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC), SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1);
if PlayObject.MagPassThroughMagic(n14,n18,nTargetX,nTargetY,n1C,nPower,True) > 0 then
boTrain:=True;
end;
end;
SKILL_LIGHTENING{11},49: begin //雷电术
if PlayObject.IsProperTarget (TargeTBaseObject) then
begin
if (Random(10) >= TargeTBaseObject.m_nAntiMagic) then
begin
nPower:= PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC), SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1);
if TargeTBaseObject.m_btLifeAttrib = LA_UNDEAD then
nPower:=ROUND(nPower * 1.5);
PlayObject.SendDelayMsg(PlayObject,RM_DELAYMAGIC,nPower,MakeLong(nTargetX,nTargetY),2,Integer(TargeTBaseObject),'',600);
if TargeTBaseObject.m_btRaceServer >= RC_ANIMAL then
boTrain:=True;
end
else
TargeTBaseObject:=nil
end
else
TargeTBaseObject:=nil;
end;
SKILL_FIRECHARM{13}, //灵魂道符
SKILL_HANGMAJINBUB{14}, //幽灵盾
SKILL_DEJIWONHO{15}, //神圣战甲术
SKILL_HOLYSHIELD{16},
SKILL_SKELLETON{17},
SKILL_CLOAK{18},
SKILL_BIGCLOAK{19},
SKILL_67,SKILL_47,SKILL_46,SKILL_48: begin //幽冥火咒
boSpellFail:=True;
if CheckAmulet(PlayObject,1,1,nAmuletIdx) then
begin
UseAmulet(PlayObject,1,1,nAmuletIdx);
case UserMagic.MagicInfo.wMagicId of
SKILL_FIRECHARM{13} ,
SKILL_67: begin //灵魂火符
if PlayObject.MagCanHitTarget(PlayObject.m_nCurrX,PlayObject.m_nCurrY,TargeTBaseObject) then
begin
if PlayObject.IsProperTarget(TargeTBaseObject) then
begin
if Random(10) >= TargeTBaseObject.m_nAntiMagic then
begin
if (abs(TargeTBaseObject.m_nCurrX - nTargetX) <= 1) and (abs(TargeTBaseObject.m_nCurrY - nTargetY) <= 1) then
begin
nPower:= PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.SC), SmallInt(HiWord(PlayObject.m_WAbil.SC)-LoWord(PlayObject.m_WAbil.SC))+ 1);
PlayObject.SendDelayMsg(PlayObject,RM_DELAYMAGIC,nPower,MakeLong(nTargetX,nTargetY),2,Integer(TargeTBaseObject),'',1200);
if TargeTBaseObject.m_btRaceServer >= RC_ANIMAL then
boTrain:=True;
end;
end;
end;
end
else
TargeTBaseObject:=nil;
end;
SKILL_48:begin //灵魂墙
if (TargeTBaseObject<>nil) and (not TargeTBaseObject.m_boDeath) and (TargeTBaseObject.m_Master=nil) then
begin
if Maglinghunqiang(PlayObject,nTargetX,nTargetY,TargeTBaseObject,UserMagic) then boTrain:=True;
end;
end;
SKILL_47: begin //替身法符
if MagMaketishen(PlayObject,nTargetX,nTargetY,UserMagic) then
boTrain:=True;
end;
SKILL_46:begin //尸灵
if (TargeTBaseObject<>nil) and (TargeTBaseObject.m_boDeath)and (TargeTBaseObject.m_Master=nil) then
begin
if MagMakeshiling(PlayObject,nTargetX,nTargetY,TargeTBaseObject,UserMagic) then boTrain:=True;
end;
end;
SKILL_HANGMAJINBUB{14}: begin //幽灵盾
nPower:= PlayObject.GetAttackPower(GetPower13(60) + LoWord(PlayObject.m_WAbil.SC) * 10,SmallInt(HiWord(PlayObject.m_WAbil.SC)-LoWord(PlayObject.m_WAbil.SC))+ 1);
if PlayObject.MagMakeDefenceArea(nTargetX,nTargetY,3,nPower,1) > 0 then
boTrain:=True;
end;
SKILL_DEJIWONHO{15}: begin //神圣战甲术
nPower:= PlayObject.GetAttackPower(GetPower13(60) + LoWord(PlayObject.m_WAbil.SC) * 10,SmallInt(HiWord(PlayObject.m_WAbil.SC)-LoWord(PlayObject.m_WAbil.SC))+ 1);
if PlayObject.MagMakeDefenceArea(nTargetX,nTargetY,3,nPower,0) > 0 then
boTrain:=True;
end;
SKILL_HOLYSHIELD{16}: begin //捆魔咒
if MagMakeHolyCurtain(PlayObject,GetPower13(40) + GetRPow(PlayObject.m_WAbil.SC) * 3,nTargetX,nTargetY) > 0 then
boTrain:=True;
end;
SKILL_SKELLETON{17}: begin //召唤骷髅
if MagMakeSlave(PlayObject,UserMagic) then begin
boTrain:=True;
end;
end;
SKILL_CLOAK{18}: begin //隐身术
if MagMakePrivateTransparent(PlayObject,GetPower13(30) + GetRPow(PlayObject.m_WAbil.SC) * 3) then
boTrain:=True;
end;
SKILL_BIGCLOAK{19}: begin //集体隐身术
if MagMakeGroupTransparent(PlayObject,nTargetX,nTargetY,GetPower13(30) + GetRPow(PlayObject.m_WAbil.SC) * 3) then
boTrain:=True;
end;
end;
boSpellFail:=False;
sub_4934B4(PlayObject);
end;
end;
SKILL_TAMMING{20}: begin //诱惑之光
if PlayObject.IsProperTarget (TargeTBaseObject) then begin
if MagTamming(PlayObject,TargeTBaseObject,nTargetX,nTargetY,UserMagic.btLevel) then
boTrain:=True;
end;
end;
SKILL_SPACEMOVE{21}: begin //瞬息移动
PlayObject.SendRefMsg(RM_MAGICFIRE,0,MakeWord(UserMagic.MagicInfo.btEffectType,UserMagic.MagicInfo.btEffect),MakeLong(nTargetX,nTargetY),Integer(TargeTBaseObject),'');
boSpellFire:=False;
if MagSaceMove(PlayObject,UserMagic.btLevel) then
boTrain:=True;
end;
SKILL_EARTHFIRE{22}: begin //火墙
if MagMakeFireCross(PlayObject,
PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC),
SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1),
GetPower(10) + (Word(GetRPow(PlayObject.m_WAbil.MC)) shr 1),
nTargetX,
nTargetY) > 0 then
boTrain:=True;
end;
SKILL_FIREBOOM{23}: begin //爆裂火焰
if MagBigExplosion(PlayObject,
PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC),SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1),
0,
nTargetX,
nTargetY,
g_Config.nFireBoomRage{1},0) then
boTrain:=True;
end;
SKILL_LIGHTFLOWER,52{24}: begin //地狱雷光
if MagElecBlizzard(PlayObject,PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC),SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1)) then
boTrain:=True;
end;
SKILL_SHOWHP{28}: begin
if (TargeTBaseObject <> nil) and not TargeTBaseObject.m_boShowHP then
begin
if Random(6) <= (UserMagic.btLevel + 3) then
begin
TargeTBaseObject.m_dwShowHPTick:=GetTickCount();
TargeTBaseObject.m_dwShowHPInterval:=GetPower13(GetRPow(PlayObject.m_WAbil.SC) * 2 + 30) * 1000;
TargeTBaseObject.SendDelayMsg(TargeTBaseObject,RM_DOOPENHEALTH,0,0,0,0,'',1500);
boTrain:=True;
end;
end;
end;
SKILL_BIGHEALLING{29}: begin //群体治疗术
nPower:= PlayObject.GetAttackPower (GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.SC) * 2, SmallInt(HiWord(PlayObject.m_WAbil.SC)-LoWord(PlayObject.m_WAbil.SC)) * 2 + 1);
if MagBigHealing(PlayObject,nPower,nTargetX,nTargetY) then boTrain:=True;
end;
SKILL_SINSU{30}: begin //召唤神兽
boSpellFail:=True;
if CheckAmulet(PlayObject,2,1,nAmuletIdx) then
begin
UseAmulet(PlayObject,2,1,nAmuletIdx);
if MagMakeSinSuSlave(PlayObject,UserMagic) then
begin
boTrain:=True;
end;
boSpellFail:=False;
end;
end;
SKILL_SHIELD{31}: begin //魔法盾
if PlayObject.MagBubbleDefenceUp(UserMagic.btLevel,GetPower(GetRPow(PlayObject.m_WAbil.MC) + 15)) then
boTrain:=True;
end;
SKILL_KILLUNDEAD{32}:begin // 圣言术
if PlayObject.IsProperTarget (TargeTBaseObject) then
begin
if MagTurnUndead(PlayObject,TargeTBaseObject,nTargetX,nTargetY,UserMagic.btLevel) then
boTrain:=True;
end;
end;
SKILL_SNOWWIND{33}: begin // 冰咆哮
if MagBigExplosion(PlayObject,
PlayObject.GetAttackPower(GetPower(MPow(UserMagic)) + LoWord(PlayObject.m_WAbil.MC),SmallInt(HiWord(PlayObject.m_WAbil.MC)-LoWord(PlayObject.m_WAbil.MC))+ 1),
0,
nTargetX,
nTargetY,
g_Config.nSnowWindRange{1},0) then
boTrain:=True;
end;
SKILL_UNAMYOUNSUL{65}: begin //解毒术 群体
if Random(11) < UserMagic.btLevel * 2 + 4 then
begin
if MagGroupjd(PlayObject,nTargetX,nTargetY) then boTrain:=True;
end;
end;
SKILL_WINDTEBO{37狮子吼}: begin
if MagWindTebo(PlayObject,UserMagic) then boTrain:=True;
end;
SKILL_GROUPLIGHTENING{53 五雷轰}: begin
if MagGroupLightening(PlayObject,UserMagic,nTargetX, nTargetY,TargeTBaseObject,boSpellFire) then
boTrain:=True;
end;
54 : begin //冰旋风
if MagGroupwind(PlayObject,UserMagic,nTargetX, nTargetY,TargeTBaseObject,boSpellFire) then
boTrain:=True;
end;
SKILL_GROUPAMYOUNSUL{38 群体施毒术}: begin
if MagGroupAmyounsul(PlayObject,UserMagic,nTargetX, nTargetY,TargeTBaseObject) then
boTrain:=True;
end;
SKILL_GROUPDEDING{39 地钉}: begin
if MagGroupDeDing(PlayObject,UserMagic,nTargetX, nTargetY,TargeTBaseObject) then
boTrain:=True;
end;
SKILL_40: begin //残影刀法
end;
SKILL_42: begin //护身真气
if MagADDABILITY(PlayObject,UserMagic.btLevel,0) then boTrain:=True;
end;
SKILL_43: begin //抱月刀
end;
SKILL_44: begin //雷霆剑
if MagHbFireBall(PlayObject,UserMagic,nTargetX, nTargetY,TargeTBaseObject) then boTrain:=True;
end;
SKILL_50: begin //风火轮
if PlayObject.Magfenghuo(UserMagic.btLevel,GetPower(GetRPow(PlayObject.m_WAbil.MC) + 15)) then
boTrain:=True;
end;
SKILL_61: begin //金刚护体
if MagADDABILITY(PlayObject,UserMagic.btLevel,1) then boTrain:=True;
end;
SKILL_63: begin //
boTrain:=True;
end;
SKILL_64: begin //神光术 //群体解麻痹 解诅咒
if Random(11) < UserMagic.btLevel * 2 + 4 then
begin
if MagGroupsg(PlayObject,nTargetX,nTargetY) then boTrain:=True;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -