注册 | 登录

游侠NETSHOW论坛





查看: 2853|回复: 1
打印 上一主题 下一主题

[分享] 关于魔法护盾的减免伤害的函数,想修改魔法护盾的就进来吧。 [复制链接]

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2013-1-23 22:03:06 |只看该作者 |倒序浏览
打开SES.KFS文件里面的uni_features.lua

然后搜索magic_shield。可见如下:

function post_magic_shield(damage,addrage,attacker,receiver,minmax,userdata)

if Attack.act_is_spell(receiver,"special_magic_shield") then
  damage=damage*.5<------这个意思是伤害乘以05
  addrage=addrage*.5<-----一样意思
else
   if (minmax==0) then Attack.act_posthitslave(receiver,"post_magic_shield",0) end
end

return damage,addrage
end

要减免80%就乘以0.2,减免100%的话就直接0,不过建议不要,这样就不好玩了。

而决定魔法护盾的回合数的是在于ses文件里面的specials问价,一样搜索magic_shield
special_magic_shield {
  category=s
  hide=1
  icon=s_overtime_magic_shield.png
  attack=scripted
  school=1
  hint_config=object_spell
  hint=special_magic_shield_small
  hint_header=special_magic_shield_head
  
  scripted {
    nfeatures=magic_immunitet,boss,pawn
    script_attack=special_magic_shield_attack
    script_calccells=calccells_all_ally
    attack_cursor=magicstick
    ad_factor=0  // use attack/defense
  }
  params {
    duration=3<-----------------------------------------------------就是这里,改9回合吧!咔咔!想刷护盾的就改成1回合。
    power=50    // % 耥桄屙? 箴铐?<----改这个不会对魔法护盾的效力产生一点作用,别废力气了!
    type=bonus
  }
  levels {
    // level = mana_cost, crystals_cost to upgrade from previous level
    1=1,0
    2=2,1
    3=3,2
  }
}

最后提醒,你的改动对电脑一样有效。当然,你可以自己重新建立一个技能文件,例如magic_shield1这样,就可以避免了。不过这样你还得修改另外一个文件,同样是SES里面的,SPECIAL_ATTACKS.LUA文件,搜索magic_shield,可见。这个是动作文件来的,要重新建立自己的魔法盾系统,就把这3个文件另外复制个新的,改名,然后对应的角色技能改名就好了。不过至今为止貌似也就大法师一个会魔法护盾……
-- ***********************************************
-- * Magic shield
-- ***********************************************
function special_magic_shield_attack()
  local target = Attack.get_target()
  if (target ~= nil) then
  
    if Attack.act_belligerent(target, nil) == 1 and cur_round<11 then
      Game.GVNumInc("magic_shield_used", 1)
    end
  
    local duration = Logic.obj_par("special_magic_shield","duration")
    local dfactor = Logic.obj_par("special_magic_shield","power")<-----这个其实是废的
    Attack.act_del_spell(target,"special_magic_shield")
    Attack.act_apply_spell_begin( target, "special_magic_shield", duration, false )
    --Attack.act_apply_par_spell( "dfactor", dfactor/100, 0, 0, duration, false)
      Attack.act_posthitslave(target, "post_magic_shield", duration)<--------就是这个函数跟最上面的一条决定了魔法护盾的威力,我觉得中间函数的power纯粹是威力文字说明而做的。
    Attack.act_apply_spell_end()
    Attack.aseq_rotate(0, target, "cast")
--    Attack.act_aseq( 0, "cast" )
    dmgts = Attack.aseq_time(0, "x")
    Attack.atom_spawn(target, dmgts , "shield" )
  end
  return true
end

有不明白的留言问我吧。浪费了我4个小时。

使用道具 举报

帖子
61
精华
0
积分
31
金钱
424
荣誉
0
人气
0
评议
0
沙发
发表于 2013-1-25 13:04:43 |只看该作者
看看,支持下

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-9-23 16:41 , Processed in 0.330809 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到