Project1

标题: 大家不妨来说说有趣的技能 [打印本页]

作者: Ajucaqiu    时间: 2017-6-7 01:31
标题: 大家不妨来说说有趣的技能
我最近在做一个传统rpg类游戏,我本身是基本没玩过什么rpg游戏,所以对这类游戏的技能设定不是很清楚,最近也有人提技能方面的问题,所以我希望大家能交流一下这方面的问题。

可以说说你们觉得有趣的技能,或者你想制作的技能的效果。其实我在做游戏的过程中发现做好一个技能还是挺复杂的,所以大家如果都说下或许可以互相学习从而进步。

我接触rm时间很短,会的也很少,但是如果有人有好的技能思路,我会尽量把我的可能不完美的方法发上来给你们参考。
作者: 丝诺温特    时间: 2017-6-7 08:28
尤格萨隆的歌剧:本次战斗中每释放过一次技能,便对随机目标(包括自己)释放技能库里的随机技能
克苏恩的降临:每拥有一个克苏恩计数,便对随机敌人造成233点伤害,克苏恩计数清零
--克苏恩的触须:咿呀咿呀咿~克总发糖~ 对目标造成 233攻击力的伤害,并且使克苏恩计数+2
--克苏恩的怜悯:恢复233点生命,并且使克苏恩计数+2
--克苏恩的诡计:接下来5回合,每回合结束时克苏恩计数+1
...

召唤法力浮龙:支付20%生命上限,召唤一只法力浮龙,主角每用一次技能法力浮龙攻击力+30%
召唤火妖:支付30%生命上限,召唤一只火妖,每当主角使用技能时火妖攻击随机敌人两次



作者: guoxiaomi    时间: 2017-6-7 11:12
最近想到了一个:如果受到的伤害为合数,格挡此伤害。
作者: 雾影药师    时间: 2017-6-7 11:58
无我境界:消耗百分比的法力值,随意释放三个已会技能
作者: 哆啦溯    时间: 2017-6-7 12:25
如果是回合制的话可以参考一下精灵宝可梦(口袋妖怪),吸血、反伤、一击必杀、以对方攻击力判定技能伤害……
作者: soulsaga    时间: 2017-6-7 13:02
本帖最后由 soulsaga 于 2017-6-7 13:24 编辑

HP的10位数決定某个技能的连续打击次数XN
也就是9是最大..9XN
控制HP10位数的数字就能把这技能伤害最大化
作者: Ajucaqiu    时间: 2017-6-7 15:44
丝诺温特 发表于 2017-6-7 08:28
尤格萨隆的歌剧:本次战斗中每释放过一次技能,便对随机目标(包括自己)释放技能库里的随机技能
克苏恩的 ...

触须
<damage formula>
value = 233;
user.addState(x);user.addState(x);
</damage formula>
怜悯是一样的
诡计
<After Eval>
user.addState(y);
</After Eval>
状态:克苏恩计数x
<Custom Apply Effec>
user._ct = user._ct || 0;
user.addStateCounter(x, 1);
user._ct += 1;
</Custom Apply Effect>
克苏恩计数y
<Custom Turn End Effect>
user._ct = user._ct || 0;
user._ct += 1;
</Custom Turn End Effect>
都没测试,我想应该行吧。。。
导演我想了下,遇到点释放次数的问题,我用循环语句的话好像是因为结算的问题只会释放一次,但是结束结算的类型,比如生命回复,会结算应有的次数,我也不知道怎么弄。我试着用选择目标来解决,但是会重复错误的次数。。。所以说我还是菜嘛,召唤物的我觉得也是用插件比较方便,不过我还没有用过,之后我研究下了再写。
作者: sirenke    时间: 2017-6-7 16:00
流星雨
陪你去看流星雨,让你的眼泪落在我身旁
作者: 怠惰な騎士    时间: 2017-6-7 16:03
Ajucaqiu 发表于 2017-6-7 15:44
触须

value = 233;

求大佬赐教,这里的这些代码是要写在哪里?配合什么插件才能用- -?
作者: Ajucaqiu    时间: 2017-6-7 16:24
guoxiaomi 发表于 2017-6-7 11:12
最近想到了一个:如果受到的伤害为合数,格挡此伤害。

奇怪的技能。。。真的能触发吗,不过可以设定伤害与回合数关系公式,加个范围
<Custom React Effect>
if (value === target.stateTurns(x)){target.gainBarrier(value);}//回合数怎么表示?。。。这样是用回合自增加的状态回合数代替回合数,不过角色死了就没了。知道回合数怎么表示就好了。用了yep状态和护盾插件
</Custom React Effect>
作者: zhujunjie988788    时间: 2017-6-7 16:39
铁布衫:受到伤害时,若受到的伤害等于自身最大HP的1~19%,则无效化,若受到的伤害等于自身最大HP的20%~39%,则受到的伤害减半,若受到的伤害等于自身最大HP的40%~100%,则受到全额伤害
群兽援护:召唤1~3只猎豹出战,当本场战斗我方召唤兽数量大于等于4时,召唤失败,但召唤者的DEF/SDF得到20%的增长(这个技能我目前没能实现,主要是搞不定队伍人数限制,一旦出战人数是满的,召唤物都召不到场上来)
破魔箭:对目标造成ATK*10的伤害,并瞬间抽光目标所有MP(MP归0),若目标受到该攻击前MP就已经为0,则造成的伤害加倍
不动的桥墩:自身HP越接近最大值,受到的伤害越低,具体比例为,当自身HP大于80%时,受到的伤害降低50%,当自身的HP大于40%时,受到的伤害降低30%,当自身的HP小于40%时,则受到全额伤害(这个和第一个类似,但做法不同)
心明镜水:吞噬身上所有异常状态,每个异常状态恢复自身20%最大HP
连锁打击:对目标造成100点伤害,若该次攻击击杀目标,则随机对另一个敌对目标重复一次技能,若再次击杀,则继续重复以上步骤,若技能没有击杀目标,则结束

小弟在做一款高度策略对抗RPG,以上是几个技能的设计,如果大神感兴趣,我可以提供更多技能设计灵感
作者: Ajucaqiu    时间: 2017-6-7 16:40
soulsaga 发表于 2017-6-7 13:02
HP的10位数決定某个技能的连续打击次数XN
也就是9是最大..9XN
控制HP10位数的数字就能把这技能伤害最大化 ...

用Math.floor()能得到位数的值,然后重复次数的问题我试了几次没成功。。
所以索性直接xXN吧
作者: Ajucaqiu    时间: 2017-6-7 16:41
怠惰な騎士 发表于 2017-6-7 16:03
求大佬赐教,这里的这些代码是要写在哪里?配合什么插件才能用- -?

需要yep的技能核心和状态核心插件
作者: sonicdonggua    时间: 2017-6-7 17:33
本帖最后由 sonicdonggua 于 2017-6-7 17:38 编辑

<whole action>
motion spell: user
animation wait: 10
change variable 10 = $gameTroop.members().length - 1
change variable 18 = 6
BATTLEBACK 3 ADD: battlebacks2, Blast
BATTLEBACK 3 FADE IN, 30
IMMORTAL: targets, true
jump user: 200, 30
move user: point, 540, 400, 30
wait: 40
motion swing: user
wait: 10
if !$gameTroop.members()[0].isDead() && $gameTroop.members()[0].isAppeared()
face user: opponent 0
move user: opponent 0, BACK BASE, 8
motion swing: user
wait: 2
action animation: opponent 0
MOTION DAMAGE: opponent 0
wait: 5
opacity user: 0%, 2
wait: 2
motion swing: user
if $gameTroop.members()[0].stateRate(4) > 0
ADD STATE 4: opponent 0, show
end
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 0 && !$gameTroop.members()[1].isDead() && $gameTroop.members()[1].isAppeared()
face user: opponent 1
move user: opponent 1, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 1
MOTION DAMAGE: opponent 1
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[1].stateRate(4) > 0
ADD STATE 4: opponent 1, show
end
motion swing: user
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 1 && !$gameTroop.members()[2].isDead() && $gameTroop.members()[2].isAppeared()
face user: opponent 2
move user: opponent 2, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 2
MOTION DAMAGE: opponent 2
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[2].stateRate(4) > 0
ADD STATE 4: opponent 2, show
end
motion swing: user
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 2 && !$gameTroop.members()[3].isDead() && $gameTroop.members()[3].isAppeared()
face user: opponent 3
move user: opponent 3, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 3
MOTION DAMAGE: opponent 3
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[3].stateRate(4) > 0
ADD STATE 4: opponent 3, show
end
motion swing: user
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 3 && !$gameTroop.members()[4].isDead() && $gameTroop.members()[4].isAppeared()
face user: opponent 4
move user: opponent 4, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 4
MOTION DAMAGE: opponent 4
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[4].stateRate(4) > 0
ADD STATE 4: opponent 4, show
end
motion swing: user
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 4 && !$gameTroop.members()[5].isDead() && $gameTroop.members()[5].isAppeared()
face user: opponent 5
move user: opponent 5, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 5
MOTION DAMAGE: opponent 5
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[5].stateRate(4) > 0
ADD STATE 4: opponent 5, show
end
motion swing: user
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 5 && !$gameTroop.members()[6].isDead() && $gameTroop.members()[6].isAppeared()
face user: opponent 6
move user: opponent 6, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 6
MOTION DAMAGE: opponent 6
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[6].stateRate(4) > 0
ADD STATE 4: opponent 6, show
end
motion swing: user
move user: point, 540, 400, 1
wait for animation
end
if $gameVariables.value(10) > 6 && !$gameTroop.members()[7].isDead() && $gameTroop.members()[7].isAppeared()
face user: opponent 7
move user: opponent 7, BACK BASE, 8
wait: 2
opacity user: 100%, 2
action animation: opponent 7
MOTION DAMAGE: opponent 7
wait: 5
opacity user: 0%, 2
wait: 2
if $gameTroop.members()[7].stateRate(4) > 0
ADD STATE 4: opponent 7, show
end
move user: point, 540, 400, 1
wait for animation
end
move user: point, 540, 350, 5
animation wait: 15
face user: target
opacity user: 100%, 20
wait for opacity
motion spell: user
animation 374: target
animation wait: 15
move user: forward, 450, 20
jump user: 100, 20
wait: 5
opacity user: 0%, 10
wait: 10
animation wait: 2
action effect
animation wait: 4
action effect
animation wait: 4
action effect
animation wait: 4
action effect
animation wait: 4
action effect
animation wait: 4
action effect
animation wait: 4
action effect
animation wait: 23
DAMAGE RATE: 200%
action effect
animation wait: 20
opacity user: 100%, 5
BATTLEBACK 3 FADE OUT, 20
IMMORTAL: targets, false
jump user: 100, 30
move user: home, 30
</whole action>
剑技·逆转技·月下狂想曲
当敌人队伍中角色存在/未死亡/未隐藏时,主角会冲向该敌人,如果敌人封技抗性不为零,则100%增加封技状态
之后八次剑击造成伤害
<Custom Apply Effect>
if (this.stateRate(1) > 0) {
this.startAnimation(194);
this._hp = 0;
}
</Custom Apply Effect>
<Custom Remove Effect>
this.startAnimation(194);
this._hp = 0;
</Custom Remove Effect>
深渊之魇 当角色死亡抗性不为零时即死,当角色死亡抗性为零时,发动死亡宣告,当若干回合状态移除后即死
作者: soulsaga    时间: 2017-6-7 17:41
路过问下..MV脚本怎么写判断战斗中?
作者: Ajucaqiu    时间: 2017-6-7 18:24
zhujunjie988788 发表于 2017-6-7 16:39
铁布衫:受到伤害时,若受到的伤害等于自身最大HP的1~19%,则无效化,若受到的伤害等于自身最大HP的20%~39% ...

铁布衫:这个技能可以在伤害前判断
<Custom React Effect>
if (value < target.mhp*0.19){target.gainBarrier(value, 0);}//我是这个思路,加个盾效果一样
...
</Custom React Effect>
召唤兽的话你把参战人数上限调高就好了啊,高得你不可能达到
破魔剑:
<Damage Formula>
value = user.atk*10;
if (target.mp <= 0){value *= 2;}
target.gainMp(target.mp);
</Damage Formula>
桥墩好像一样的吧。。
加血:所谓异常状态其实和普通状态没什么区别,所以你还要用状态分类加以区分
<Custom Select Condition>
condition = target._states.length > 0;
</Custom Select Condition>

<Damage Formula>
var states = target._states.length;
value = (user.mhp*0.2) * states;
</Damage Formula>

<Pre-Damage Eval>
while (target._states.length > 0) {
var stateId = target._states.shift();
target.removeState(stateId);}
</Pre-Damage Eval>

作者: Ajucaqiu    时间: 2017-6-7 18:29
soulsaga 发表于 2017-6-7 17:41
路过问下..MV脚本怎么写判断战斗中?

$gameParty.inBattle()
作者: raketenfaust02    时间: 2017-6-7 18:39
魔封剑(来自FF6)
效果:使用后自身停止行动,吸收任何人使用的下一个魔法(无论敌我)并转化为自身MP
原理:为自身附加状态(216),停止自身行动;为场上所有人附加状态(217),当有状态(217)的目标施法时,强制中断法术并为魔封剑使用者恢复相当于法术消耗的MP。

——不过说老实话,这个技能在FF6里一点都不实用……

【技能】
编辑器效果:场上所有人附加状态(217)
Code:
<Target: Everybody>
<After Eval>
user.addState(216);
</After Eval>

【状态(216)】
效果:停止行动
code:
<State Motion: Chanting>

【状态(217)】
Code:
<Custom Conclude Effect>
if (this.isMagical()){
  this.damage = 0;
  this.lukEffectRate = 0;
  BattleManager.endAction();
  for (var i = 0; i < $gameParty.aliveMembers().length; i++) {
    var actor = $gameParty.aliveMembers()[i];
    if (actor.isStateAffected(216)){
      actor.gainMp(10);
      actor.startDamagePopup();
      actor.removeState(216);
    }
  actor.removeState(217);
  }
  for (var i = 0; i < $gameTroop._enemies.length; i++) {
  var enemy = $gameTroop._enemies[i];
  enemy.removeState(216);
  enemy.removeState(217);
  }
}
</Custom Conclude Effect>

作者: soulsaga    时间: 2017-6-7 19:08
本帖最后由 soulsaga 于 2017-6-8 12:11 编辑
zhujunjie988788 发表于 2017-6-7 16:39
铁布衫:受到伤害时,若受到的伤害等于自身最大HP的1~19%,则无效化,若受到的伤害等于自身最大HP的20%~39% ...

队伍人数限制在战斗中解除上限..
rpg_objects.js脚本里搜Game_Party.prototype.maxBattleMembers
JAVASCRIPT 代码复制
  1. Game_Party.prototype.maxBattleMembers = function() {
  2.         if (!$gameParty.inBattle()) {
  3.                 return 4;
  4.                 } else {
  5.     return 99;
  6.     }
  7. };
脚本改成这样

@zhujunjie988788
作者: 咪琳水晶    时间: 2017-7-10 23:41
我印象最深的是黑龙舞兮云飞扬里两个骷髅小怪的“墓主加油”,这是个毫无效果的技能。
然后墓主人的招牌技是“家财万贯驱穷民”感觉名字很喜感WWWW
作者: 18503097404    时间: 2017-8-25 16:24
对敌人造成10次攻击,如果目标在10次攻击内死去,则对下一个目标继续攻击,直到打完10次攻击,如果敌人全灭则结束攻击。
作者: 战栗贵公子    时间: 2017-8-25 16:51
模仿:标记一名敌方角色,下回合将进行和该角色同样的行动方式。
写轮眼:回合开始前复制一名敌方角色在本场战斗中使用过的一个技能,并可在本回合内使用。
灵魂交换:可以交换一名敌人自身的HP和MP(BOSS无效)。
作者: 亦惜卿    时间: 2017-8-25 18:48
秘术·生命的挽歌:牺牲自身一定的生命值,以此祝福一个目标(队友),使目标的受到神的洗礼(复活队友,并且接触队友的状态(不良与良性的buff都解除))
秘术·死神的诅咒:召唤死神的镰刀,收割邪恶的灵魂(被诅咒的目标有几率触发必死效果)
秘技·五行遁术(任务空间无法使用,游戏菜单可以使用):道教秘法,化为五行(使用后脱离战斗/退出当前洞穴/迷宫)
邪术·生命吞噬(不死生物/机械无效):域外邪魔所创造的邪术,吸允生命,恢复自身,因是邪术受圣光的排斥(对目标使用后能吸取目标生命并回复50%所吸取的生命值,自身有一定几率因圣光排斥而眩晕)
魅惑之音(限定女性学习):妲己不传之术,以声为术,扰乱敌人的思绪(目标混乱)
魂咒(不死生物/机械无法标记):使用神秘的手法在目标的灵魂上留下标记(被标记的目标所造成的伤害减少(类似于101的虚弱))
灵魂反噬(限定只能在有灵魂标记的目标上使用):以魂咒为引,使用强大的精神冲击波冲击目标灵魂(造成魔法伤害,并有几率使目标眩晕(使用后,三回合里不能对同一目标使用魂咒))不屈
不屈(被动技能):战神刑天附体(一定几率在频死状态触发,效果:恢复50%最大生命值,并获得不屈意志(负面效果减半,持续三回合))
信仰(被动技能):拥有坚定的意志与(受到负面效果时,开始判定(一定几率解除这次所受到的负面效果))
百炼(被动技能):无数次战斗锻炼出的格斗技巧(普通攻击时有几率触发追击效果)
圣子(被动技能):神所选择的命运之子(受到敌方攻击时有几率诅咒攻击你的人(对不死生物额外造成魔法伤害))

作者: Lucia    时间: 2017-8-25 19:20
探囊取物,3回合内spd,命中,力量+30%,防御-30%
作者: Ajucaqiu    时间: 2017-8-25 22:55
Lucia 发表于 2017-8-25 19:20
探囊取物,3回合内spd,命中,力量+30%,防御-30%

这不就是个普通的buff吗。。
作者: Ajucaqiu    时间: 2017-8-25 23:15
亦惜卿 发表于 2017-8-25 18:48
秘术·生命的挽歌:牺牲自身一定的生命值,以此祝福一个目标(队友),使目标的受到神的洗礼(复活队友,并 ...

。。。
这种情况名字和修辞就不用写的好,不然看起来花里胡哨的。
1.死亡就会移除所以状态了,所以直接复活就好了,一个普通的复活技能,加上血量消耗a.gainHp(-x);就好了
2.即死的负面状态可以在状态里写:<Custom React Effect>
                                                if (this.isHpEffect() && Math.randomInt(100)>80){
                                                target.gainHp(-target.hp);}
                                                </Custom React Effect>
20概率秒杀。(需要yep插件)
作者: @npc    时间: 2017-8-25 23:17
魔法卡:左手贩剑右手持盾,场上所有单位的攻击力(物攻)·守备力(物防)互换
作者: 迷糊的安安    时间: 2017-8-26 07:14
生命链接:给一名敌人或者队友加上状态后,自身被扣血或者加血时,目标享受同样效果。

适合强行扣无敌状态的敌人的血,或者强行给中了『治疗无效』debuff的队友加血。
作者: 废剑    时间: 2017-9-1 07:48
本帖最后由 废剑 于 2017-9-2 07:51 编辑

力量燃烧:抽空敌方法力并在数回合内对其造成相等的伤害,发动限制-------还没想出来

太古昭示:对全场  所有人每回合恢复大量生命值,并免除负面效果

力量循环:选定场上任意人员进行标记,接下来该单位施法,将为你恢复一定的法力

翳形术:速发法术(无视回合),让自己隐形,所有目标为翳形者的动作均失去目标或Miss,翳形状态下逃跑成功率99%,并增加暴击伤害和暴击率;非战斗状态下可使用翳形,规避战斗。翳形时无法使用魔法




作者: 2356311785    时间: 2017-9-2 23:44
魅惑诱敌:用自己的伪装形态魅惑对方,使其攻击自己的友军。
解放伪装:解除伪装,解放二阶段技能,重置敌人已有的魅惑状态,没有魅惑状态的敌人将恐惧(无法行动)一回合。
捕食(二阶段):尝试捕食目标,造成大量伤害,成功率10%(魅惑状态下95%),若成功且击杀对方,则为对方全体附加魅惑,附加成功率50%。
——
命运硬币:50%几率对目标造成伤害,50%恢复目标的部分生命值。
绝望轮盘:对目标造成三次1~50的伤害(无视护甲)
影子戏法:调出三个选项,每个选项下随机出现以下任意一个效果。
①对目标造成大量伤害
②为目标恢复一半的HP和MP
③对目标造成五次-100~100的伤害
④对自己造成-100或100点伤害
作者: Ajucaqiu    时间: 2017-9-3 13:39
2356311785 发表于 2017-9-2 23:44
魅惑诱敌:用自己的伪装形态魅惑对方,使其攻击自己的友军。
解放伪装:解除伪装,解放二阶段技能,重置敌 ...

1,魅惑不就是个普通状态吗。。。
2,加个状态判断就好,b.isStateAffected() ? b.resetStateCounts() : b.addState();value
3,<After Eval>
     if (Math.random()>0.5){
     target.gainHp(500);}else{target.gainHp(-500);}
     target.startDamagePopup();
     </After Eval>
4,简单点伤害25,分散度100%就行了吧
5,技能重复三次,分4种等概率情况就行了
作者: Ajucaqiu    时间: 2017-9-3 21:37
废剑 发表于 2017-9-1 07:48
力量燃烧:抽空敌方法力并在数回合内对其造成相等的伤害,发动限制-------还没想出来

太古昭示:对全场   ...

第三个比较有意思:
<Custom Initiate Effect>
origin.gainMp(x);
origin.startDamagePopup();
</Custom Initiate Effect>




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1