注册 | 登录

游侠NETSHOW论坛





查看: 3610|回复: 3
打印 上一主题 下一主题

[分享] 如何让你的部队使用大火球、流星火雨等群体魔法 [复制链接]

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2013-1-27 19:06:04 |只看该作者 |倒序浏览
以流星火雨为例,选其中一个兵种,建立技能firerain,attacks=mveattack,fireran

  firerain {
    class=spell
    spell=spell_god_fire_rain<-------------可以自己另外建立技能名称。我加了god是以示区别。
    attack_cursor=magicstick
    script_attack=spell_god_fire_rain_attack<--------------------如果这里写成spell_fire_rain_attack的话,就是直接用流星火雨,但是技能的威力就不好调整了,只能够用一级的。
    script_calccells=
    require_skill=destroyer:1<--------这里我加了技能限制,那遇上野外的对方也不能发得出来。
    hint=spell_godfirerain_hint<----------这里是魔法的名称,自己建立一套即可
    hinthead=spell_godfirerain_head<----------这里是魔法的名称,自己建立一套即可
    reload=4<----冷却3回合
    picture=ba1_fireball_<--------------------------------因为没有合适的小图片,就套用了小恶魔的火球照片
    picture_small=ba1_fireball_small.png
    no_hint=1

然后打开spells.txt,搜索fire_rain,然后直接将代码复制,在下面多COPY一段,这样可以避免修改到原来的流星火雨技能
// 毋礤眄 念驿?
spell_god_fire_rain {<-------------------------------------------------------我加上god以示区别
  category=s
  profit=4
  price=10000
  hide=1<--------------------------------------------------------------------加上这一段,魔法就会隐藏起来,不会再重复在魔法书里面出现,敌人的英雄也用不了。
  image=book_spell_fire_rain.png
  button_image=book_scroll_fire_rain.png
  label=SN_fire_rain
  attack=scripted
  school=3
  hint=spell_fire_rain_hint
  hint_header=spell_fire_rain_header
  
  scripted {
    script_attack=spell_god_fire_rain_attack<----------------------------------------------这里要与角色技能的一致。
    script_calccells=calccells_mass_all
    attack_cursor=magicstick
    ad_factor=0  // use attack/defense
    nfeatures=magic_immunitet,god
  }
  params {
    duration=0
    typedmg=fire
    damage=70-80<------------------------------------------------------------这里是魔法的伤害值
    lvl_dmg=210
    burn=50   //50<-----------------------------------------------------------这里是燃烧的几率
    multi=7
  }
  levels {
    // level = mana_cost, crystals_cost to upgrade from previous level
    1=7,7
    2=12,10
    3=22,25
  }
}

搜索spells.lua文件,找fire_rain,然后copy代码,再建立一段
-- ***********************************************
-- * Fire Rain
-- ***********************************************
function spell_god_fire_rain_attack()<-------------------------------------------我加了god以示区别
  local target = Attack.get_target()                -- epicentre
  Attack.act_aseq( 0, "cast" )<---------------------------------------------------原来没有的,我加进去就会有CAST这个动作出现,不然就只会忽然的出来流星火雨,而没有施放的动作。
  local dmgts = Attack.aseq_time(0, "x")<------------------------------------动作描述就是这两段而已
  if (target ~= nil) then
        local min_dmg,max_dmg,burn = pwr_god_fire_rain()<---------------------------------这段代码很重要,可以在spells_power.lua里面找到
        local dmg_type = Logic.obj_par("spell_god_fire_rain","typedmg")<-----------------记得跟修改的魔法名称一致
    local n = 7
    for i=0,n-1 do
      target = Attack.get_target(i)
      if (target ~= nil) then
        Attack.atk_set_damage(dmg_type,min_dmg,max_dmg)
        local deviation = Game.Random()
        local a = Attack.atom_spawn(target, deviation, "hll_firerain", 2.0)    -- summon fire rain
        local dmgts = Attack.aseq_time(a, "x")
        common_cell_apply_damage(target, deviation + dmgts)                     -- apply damage
        burn_rnd=Game.CurLocRand(100)+1
            if burn_rnd<=burn then
                            effect_burn_attack(target,dmgts+2+deviation,3)
            end
      end
    end
  end
  return true
end

搜索spells_power.lua文件里面的pwr_fire_rain,一样复制多一段在下面
function pwr_god_fire_rain(level)<------------------------------------------加上god以示区别
    local min_dmg,max_dmg = text_range_dec(Logic.obj_par("spell_god_fire_rain","damage"))<------名称要跟修改的魔法一致
    local burn = Logic.obj_par("spell_god_fire_rain","burn")<-------------------------------------------------名称要跟修改的魔法一致
    if tonumber(level)==0 or level==nil then
    level=3<----------------------------------------------------------原来的代码是level=Obj.spell_level(),改成3就变成了3级的流星火雨
    if level==0 then level=1 end
        if Obj.where()==6  and Obj.spell_level()~=0 then level=level+1 end
    else
        level = tonumber(level)
    end
    local destroyer_skill=tonumber(skill_power2("destroyer",1))+hero_item_count2("sp_spell_attack","count")+hero_item_count2("sp_spell_fire","count")
    local lvl_dmg = tonumber(Logic.obj_par("spell_god_fire_rain","lvl_dmg"))<-----------------------要跟修改的魔法名称一致
    local int_dmg = 1+tonumber(Game.Config("spell_power_config/int_power"))*HInt()/100
  int_dmg = int_dmg * (1+math.floor(HInt()/7)*(15/100)) --玎 赅驿 7 桧蝈腚尻蜞 +10% 箴铐?
   
    min_dmg = math.floor(min_dmg*(1+(level-1)*lvl_dmg/100)*(1+destroyer_skill/100)*int_dmg)
    max_dmg = math.floor(max_dmg*(1+(level-1)*lvl_dmg/100)*(1+destroyer_skill/100)*int_dmg)
    burn=burn*level+HInt()
    if burn>100 then burn=100 end
    min_dmg=dmg_round(min_dmg)
    max_dmg=dmg_round(max_dmg)

    return min_dmg,max_dmg,burn
end

最后在eng_units_specials.lng(兽人入侵或者是其他版本的自己找吧,我只是用一个最普通的来举例)里面建立技能的描述hint
spell_godfirerain_name=流星火雨
spell_godfirerain_head=^special_tC^[Bad]
spell_godfirerain_hint=^special_t^炽热之雨灼烧7格的区域,对范围内的所有部队造成火伤害并用烈焰灼烧它们.

完工。
最后发两张图

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
沙发
发表于 2013-1-27 19:08:31 |只看该作者
其实修改起来蛮简单的。不过不知道的时候找得很麻烦罢了!
另外也可以参照着创造技能时空回流之类的。不过我倒是找不到黑洞这些新加的魔法(以前KP的精灵技能)摆在哪里……

使用道具 举报

尚方令
熾天使

大头像勋章白金会员勋章活跃勋章荣誉勋章特色头衔勋章

帖子
42446
精华
0
积分
23806
金钱
91871
荣誉
254
人气
30
评议
0
板凳
发表于 2013-1-27 23:39:21 |只看该作者
不錯 支持技術帖

使用道具 举报

Fashion&man@(*$)%萌
游侠元老版主
游侠剑阁工作组【评测】
海魂☆飞翔的荷兰人
★★★★★★★

元老版主勋章版主勋章资深版主勋章大头像勋章

帖子
7126
精华
6
积分
6080
金钱
46742
荣誉
130
人气
172
评议
5

地板
发表于 2013-1-29 23:22:42 |只看该作者
猛贴 .....

使用道具 举报

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

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

GMT+8, 2025-11-26 07:06 , Processed in 0.330974 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到