注册 | 登录

游侠NETSHOW论坛





查看: 7099|回复: 10
打印 上一主题 下一主题

[分享] 做了一个比较诡异的技能,名字比较邪恶——吸精大法 [复制链接]

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2013-2-1 02:09:22 |只看该作者 |倒序浏览
本帖最后由 huangwinter 于 2013-2-1 02:10 编辑

此技能的作用是在于吸收敌人的生命值为自己所用,并且让敌人部队当前单位的生命值减为1。跟鬼神使的技能有点像,但是效果不一样。请待我慢慢道来。
此技能是从食人魔的吸取敌人AP的技能修改而来。另外以下修改是基于兽人入侵的版本进行的,俺没玩到北方那地步。
随便一个角色的ATOM里面的attacks里面增加技能absorption,然后就建立技能啦。拿魅魔为例demoness.atom(我是觉得魅魔比较适合这技能而已)
  absorption {
    class=scripted
    reload=2<-----------------------------------------------回合数我改成2
    no_hint=1
    endmove=0
    nfeatures=pawn,boss
    attack_cursor=magicstick
    hinthead=special_godabsorption_head<-------------------------------这个要建立hints
    hint=special_godabsorption_hint<--------------------------------------这个要建立hints
    script_attack=special_godabsorption<---------------------------------对应下面建立的技能demoness.lua文件
    script_calccells=calccells_all_enemy_absorption
    picture_small=BA1_Seduction_small.png
    picture=BA1_Seduction_

然后建立demoness.lua文件(怎么建立自己去看论坛帖子)。
function calccells_all_enemy_absorption()
--  local acnt = Attack.act_count()
--  for i=1,acnt-1 do
  for c=0,Attack.cell_count()-1 do
    local i = Attack.cell_get(c)
    if (Attack.act_enemy(i)) and Attack.act_hp(i)>0 then       -- contains enemy
      if Attack.act_applicable(i) and Attack.act_hp(i)>0 then      -- can receive this attack
        Attack.marktarget(i)            -- select it
      end
    end
  end
  return true
end

function special_godabsorption()
    local target = Attack.get_target()
    Attack.aseq_rotate(0, target)
    Attack.act_aseq( 0, "castmagic" )<-----------------------------------------这个是动作而已
    local dmgts = Attack.aseq_time(0, "x")
local hp = Attack.act_hp(target)<---------------------------------------------原来食人魔的技能描述都是AP,我改成了HP而已,哈哈!
if hp > 0 then
  Attack.act_hp(target, 1) -- 镳铖蝾 潆 铗钺疣驽龛 0 文
  Attack.atom_spawn(target, 0, "effect_absorption")
  --if not (Attack.act_skipmove(target) > 0) then -- 羼腓 栩 箧?镳铒篑赅弪 躅?(铗 铖脲镫屙?), 蝾 翦牝 礤 耋祆桊箦?
   --Attack.act_skipmove(target, 1)<-----------------------------------------------这里食人魔的技能本来是0,意思吸收AP到0点,我改成吸收HP到1点,因为HP变成0,敌人部队不会死的,反而变成无法攻击的状态!而变成1点就碰一下就死了。
   Attack.act_attach_modificator(target, "skipmove" , "skipmove_absorption", 1, 0, 0, 1)
  --end
  Attack.act_hp(0, Attack.act_hp(0)+hp)<---------------------------------------吸收了敌人的HP后会加到当前部队的HP上,如果原来是魅魔是10点,敌人部队是20点生命,技能使用后会吸收19点HP,那么就会在当前魅魔的生命上增加19HP,变成10+19=29。
end
return true
end

再加上HINTS的文字描述(加技能描述大家都会吧?)
special_godabsorption_name=吸精大法
special_godabsorption_head=^special_tC^[Bad]
special_godabsorption_hint=^special_t^邪恶的吸精大法,夺取一队敌军所有精力.敌军第一只单位生命减为1,部队移动力为0.
很简单是吧!
下面看图看效果吧!

现在生命是满的


给攻击后生命值减少了


一个吸精大法生命值补满!还有多!

此技能建议用于肉盾类部队,另外对敌人的兵种级别越高,效果越好,呵呵……不过别指望能秒杀敌人,技能有限制,另外也不能够复活啦,要链接到复活的话好麻烦好麻烦好麻烦!将就着用吧!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
沙发
发表于 2013-2-1 10:11:33 |只看该作者
自己贴自己顶

使用道具 举报

帖子
9449
精华
0
积分
4804
金钱
26489
荣誉
6
人气
191
评议
0
板凳
发表于 2013-2-1 20:04:38 |只看该作者
和吸血蝙蝠有啥不一样

使用道具 举报

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
地板
发表于 2013-2-2 04:31:40 |只看该作者
文长之哀 发表于 2013-2-1 20:04
和吸血蝙蝠有啥不一样

吸血蝙蝠的是被动技能,这个是主动技能
这个技能还带吸取AP值,让敌人停止行动。
另外如果你面对一头红龙,你可以将它的HP吸收加到自己的生命值上面,然后再一下就打死一条。就是如果红龙有1200HP,你只有50,但是你用完技能后,你的HP就变成1249,它的HP变成1。

明白没?

使用道具 举报

帖子
66
精华
0
积分
33
金钱
1004
荣誉
0
人气
0
评议
0
5#
发表于 2013-2-4 09:47:13 |只看该作者
楼主,看了你几个帖子,觉得这方面应该很强悍。
借个地方问下,我想把原来复仇天使的技能改成群体的,参照祝福、急速等改了相应的script_calccells=calccells_complex_ally,在params中添加unit_count=one,one,all也总是不行,有何方法,谢谢!
贴上复仇天使源代码
spell_angel_avenger {
  category=s
  profit=2
  price=5000
  image=Book_Spell_angel_avenger.png
button_image=book_scroll_angel_avenger.png
  icon=s_overtime_angel_avenger.png
  label=SN_lightning
  attack=scripted
  school=1
  hint_config=object_spell

  hint=spell_angel_avenger_hint
  hint_header=spell_angel_avenger_header
  
  scripted {
    no_hint=1     // 啥意思,赋值,0,1有什么区别?
    script_attack=spell_angel_avenger_attack
    script_calccells=calccells_all_ally   
    attack_cursor=magicstick
    ad_factor=0  // use attack/defense
    nfeatures=magic_immunitet
    ai_ignore=1  //这个又是什么,目标忽略?
  }
  params {
    damage=240-360
    type=bonus
    typedmg=magic
    lvl_dmg=240
    duration=4,5,6
    int=0
  }

使用道具 举报

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
6#
发表于 2013-2-4 13:31:57 |只看该作者
autumner 发表于 2013-2-4 09:47
楼主,看了你几个帖子,觉得这方面应该很强悍。
借个地方问下,我想把原来复仇天使的技能改成群体的,参照 ...

scripted {
    no_hint=1     // 啥意思,赋值,0,1有什么区别?<-------------------这个没什么意义,hint是指提示跟说明,不影响任何的使用,0就是否false,1就是是true值,基本的编程知识
    script_attack=spell_angel_avenger_attack
    script_calccells=calccells_all_ally    <----------------------------这个只是判定条件,你也可以改成calccells_all_enemy,这个意思就变成对全体敌人有效,但是要让魔法使用到群体,其实是上面的sript_attack的描述,则个要在spells.lua里面找,但貌似复仇天使的是AP版本才加的,所以后来是变成addon_spells.lua里面的描述才能找到。
    attack_cursor=magicstick
    ad_factor=0  // use attack/defense
    nfeatures=magic_immunitet<----------------------------------------这里提示一下,你可以在自建的兵种的unit_features里面加上自己的特性,例如god,human2之类的,然后你再在一些会伤害到自己人的群体魔法里面的nfeatures里面加上god,human2这样,你的魔法就不会伤害到自己了。
    ai_ignore=1  //这个又是什么,目标忽略?<---------------------电脑忽略,你可以看到如时空回流这些魔法,也是有这个段落的,所以AI从来没用过。
  }
  params {
    damage=240-360
    type=bonus
    typedmg=magic
    lvl_dmg=240
    duration=4,5,6
    int=0
  }

如果你要修改成群体魔法,你要将addon_spells.lua的这一段攻略了,我觉得麻烦就没弄(老实说我也不太懂,因为我不是学编程出身的,只是因为国外的恩赐的开放性,我也看得懂一些英文所以才弄的)。我目前已经弄到兵种可以使用这个增益魔法了(方法跟我这段时间的一样),我也曾经想弄一个群体的魔法盾或者群体的复仇天使,考虑是可以参考如加速这些群体魔法的方法。你也可以去弄一下,我想应该是没有问题的。

-- ***********************************************
-- * Angel-Avenger
-- ***********************************************
function spell_angel_avenger_attack()
local level=Obj.spell_level()<-----------------------------------------------这里你改成3的话,就是3级的复仇天使了
if level==0 then level=1 end
    local target = Attack.get_target()
    Attack.act_del_spell(target,"spell_angel_avenger")
    local duration = tonumber("0" .. text_dec(Logic.obj_par("spell_angel_avenger","duration"),level))
        if Logic.obj_par("spell_angel_avenger","int")=="1" then
            duration = duration + math.floor(HInt()/tonumber(Game.Config("spell_power_config/int_duration")))
        end
    Attack.act_apply_spell_begin( target, "spell_angel_avenger", duration, false )
        Attack.act_posthitslave(target, "post_spell_angel_avenger", duration)
  local min_dmg, max_dmg = pwr_angel_avenger(level)
  Attack.act_spell_param(target, "spell_angel_avenger", "damage", min_dmg.."-"..max_dmg)
    Attack.act_apply_spell_end()
    Attack.atom_spawn(target, 0, "magic_avenger",Attack.angleto(target))
return true
end
function find_unit_by_uid(uid)
for i=1, Attack.act_count()-1 do
  if Attack.act_uid(i) == uid then return i end
end
end
function post_spell_angel_avenger(damage,addrage,attacker,receiver,minmax,userdata)
local spell = "spell_angel_avenger"
    if Attack.act_is_spell(receiver,spell) then
  if minmax == 0 then
   if Attack.get_caa(attacker) ~= nil and not Attack.act_ally(attacker, Attack.act_belligerent(receiver)) then -- 羼腓 ?礤 耧咫?- 铗忮鬣屐, 怛铕? 镳钼屦赅 - 黩钺?礤 铗忮鬣螯 疋铊?
    local dmg_type = Logic.obj_par(spell,"typedmg")
    local a = Attack.atom_spawn(attacker, 0, "angel_avenger")
    Attack.val_store(a, "damage", Game.CurLocRand(text_range_dec(Attack.act_spell_param(receiver, spell, "damage"))))
    Attack.val_store(a, "dmg_type", dmg_type)
    Attack.val_store(a, "belligerent", Attack.act_belligerent(receiver)) -- 潆 镳噔桦钽?鲡弪??腩沐
    Attack.val_store(a, "receiver_uid", Attack.act_uid(receiver))
    Attack.val_store(a, "target_uid", Attack.act_uid(attacker))
    Attack.val_store(a, "creator", "magic") -- 潆 耱囹桉蜩觇 镱耠?犷
    Attack.resort(Attack.get_caa(a))
   end
   -- Attack.act_posthitslave(receiver,"post_spell_angel_avenger",0)
  end
else        
  Attack.act_posthitslave(receiver,"post_spell_angel_avenger",0)
   end
return damage
end
function angel_avenger_attack()
Attack.log_label('null')
local act = find_unit_by_uid(Attack.val_restore("target_uid"))-- Attack.get_caa(Attack.get_cell(0))
if act ~= nil then
  local a = Attack.atom_spawn(act, 0, "magic_lightning")
  Attack.atk_set_damage(Attack.val_restore("dmg_type"), Attack.val_restore("damage"))
  common_cell_apply_damage(act, Attack.aseq_time(a, "x"))
  Attack.log_label('')
  local receiver = find_unit_by_uid(Attack.val_restore("receiver_uid"))
  if receiver ~= nil then
   local spell = "spell_angel_avenger"
   local dur = Attack.act_spell_duration(receiver, spell)
   if dur <= 1 then
    Attack.act_posthitslave(receiver,"post_spell_angel_avenger",0)
    Attack.act_del_spell( receiver, spell )
   else
    Attack.act_spell_duration(receiver, spell, dur-1)
   end
  end
end
Attack.act_remove(0, 0)
return true
end

使用道具 举报

帖子
66
精华
0
积分
33
金钱
1004
荣誉
0
人气
0
评议
0
7#
发表于 2013-2-4 14:17:02 |只看该作者
huangwinter 发表于 2013-2-4 13:31
scripted {
    no_hint=1     // 啥意思,赋值,0,1有什么区别?

还是很感谢。期待楼主的研究成果。

使用道具 举报

帖子
194
精华
0
积分
107
金钱
993
荣誉
1
人气
0
评议
0
8#
发表于 2013-2-4 23:19:23 |只看该作者
autumner 发表于 2013-2-4 14:17
还是很感谢。期待楼主的研究成果。

没动力……最近没动力

使用道具 举报

帖子
649
精华
0
积分
325
金钱
167
荣誉
0
人气
0
评议
0
9#
发表于 2013-3-9 02:39:40 |只看该作者
哥顶的不是帖子,是寂寞!,

使用道具 举报

帖子
534
精华
0
积分
267
金钱
1420
荣誉
0
人气
1
评议
0
10#
发表于 2014-8-15 14:35:19 |只看该作者
楼主改的是哪个版本?是北方勇士么?

使用道具 举报

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

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

GMT+8, 2025-10-30 01:24 , Processed in 0.362887 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到