查看: 6717|回复: 9

[交流讨论] 关于状态和特技的拓展,望大神指导

[复制链接]
梦石
0
星屑
75
在线时间
73 小时
注册时间
2015-7-10
回帖
26
发表于 2016-3-19 01:12:24 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 老王的忧郁 于 2016-3-19 21:31 编辑

在下并没有学习过JS,有些想法现在还不能自己完成。

首先是状态

    MV的数据库已经有很多特效额外参数,但是使用的时候,总有无法直接用数据库做出想要的状态效果。

    武侠类的游戏,姑苏慕容的斗转星移,以彼之道还施彼身的装B技能,乾坤大挪移,沾衣十八跌什么的

   比如:被攻击时触发的比例反伤类BUFF、几率减伤、护盾···········

              时序作用类的非百分比HP/mp恢复、hp/mp伤害型BUFF··········

              使用技能时触发的加成类BUFF,比如:几率增加攻击力、伤害加深·············

我在外站上发现了两个插件的运用,在此感谢MV群@墨汁乱舞的推荐!

https://alistairengine.wordpress.com/category/eval-collection/

  ♦ YEP_BuffsStatesCore.js

  ♦ YEP_AbsorptionBarrier.js


在状态的注释中,可以自定义编辑想做的特殊效果。

已有约10个例子,例举1个。

1、类似暗黑3法师的天赋技能:不稳定力场。
      效果:收到致命伤害的时候,免疫这次伤害,同时附加一个相当于400%生命最大值得护盾,持续5回合。
      在状态的注释里填写以下代码:

[pre lang="javascript" line="0"]<Custom Battle Effect>
user._unstableAnomaly = 0
</Custom Battle Effect>

<Custom React Effect>
if (target._unstableAnomaly < 1 && value > target.hp) {
target._unstableAnomaly = 1;
value = 0;
target.gainBarrier(target.mhp * 4, 5);
target.startAnimation(37);
};
</Custom React Effect>[/pre]

2、反伤效果:直接反弹百分百的伤害;
      在状态的注释里填写以下代码:

[pre lang="javascript" line="0"]<Custom Respond Effect>
user.gainHp(-value);
if (user.hp <= 0) { user.performCollapse() };
</Custom Respond Effect>[/pre]
   
3、被攻击回血的技能;
      效果:当使用者生命值小于30%,将有50%的几率恢复自身最大生命值的35%生命值。

[pre lang="javascript" line="0"]<Custom Deselect Effect>
if (target.hpRate() < 0.3) {
if (Math.random() < 0.5) {
target.gainHp(~~(target.mhp * 0.35));
target.startAnimation(41);
target.startDamagePopup();
target.clearResult();
}
}
</Custom Deselect Effect>[/pre]

总之,  ♦ YEP_BuffsStatesCore.js 和 ♦ YEP_AbsorptionBarrier.js 者两个插件,

只需要会JS的简单运用,就能写出很有意思的特效。即使不会JS也能按图索骥,仿写特效。

       (=゚ω゚)=


其次是   特技

    特技的伤害公式是可以当做脚本来运行的。

    那么我们是否可以用这个特性做出更多好玩的技能呢?

    1、通过分歧来做出过个伤害公式,例如:if  (a.atk> 50){a.atk*5-b.pdf*1}else if (a.str > 100){a.atk*5+a.str*0.8-b.pdf} slse if(){}  slse{};
         
         或者加入随机数,以随机数来随机触发伤害公式。

         或者加入状态的判定,使技能有更多的搭配。比如,a 身上有1号状态,则攻击力增加20%; B 身上有5号状态,那么B 被攻击,必定暴击或者其他的效果。

    2、通过伤害公式,在此输入除伤害公式之外的代码,来增加显示文字的效果。比如,在使用技能的时候,显示一个 伤害字符,出现在战斗图上

         比如:使用者战斗图上显示伤害字符“一剑西来荡妖氛”之类的词句,用来刷时髦值

      这个我目前还不知道要怎么弄······脚本渣·········

   3、随机的特技攻击范围、随机攻击次数,不知道要如何实现。

  4、使用主技能,随机触发多个子技能的方法,
        
       比如,主技能是“降龙十八掌”,使用降龙十八掌,随机出现这套掌法中的18中招式,见龙在田、或跃于渊、飞龙在天等招式、各有不同的随机的特技攻击范围、随机攻击次数、伤害公式、附加BUFF等、
      
       这样的特技,该用什么方法比较容易实现呢?   {主技能无伤害公式,事件强制行动使用多个数据库中的其他特技(比较费数据库名额)?或者用脚本该如何写?}

梦石
0
星屑
75
在线时间
73 小时
注册时间
2015-7-10
回帖
26
 楼主| 发表于 2016-3-19 21:32:11 | 显示全部楼层
本帖最后由 老王的忧郁 于 2016-3-19 21:49 编辑

和敌方单位同生共死,的技能效果;

   若果被攻击者死亡,那么攻击者也会同时死亡

[pre lang="javascript" line="0"]<Custom Establish Effect>
if (target === origin) {
if (target.hp <= 0) {
user.die();
user.performCollapse();
}
}
</Custom Establish Effect>

<Custom Respond Effect>
if (user === origin) {
if (target.hp <= 0) {
user.die();
user.performCollapse();
}
}
</Custom Respond Effect>[/pre]

点评

请问这段代码是写在哪?我写在状态和技能里都没有效果  发表于 2016-8-31 22:41
回复

使用道具 举报

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
回帖
194
发表于 2016-8-27 13:48:22 | 显示全部楼层
本帖最后由 raketenfaust02 于 2016-8-27 14:41 编辑

抛砖引玉放几段我做的:

牺牲自己为全队恢复生命值(或者随便别的什么效果)的技能
使用后自身扣除100%的生命值,并附加死亡状态(双保险,以防有其他特殊状态阻止死亡)


  1. <Target: All Allies But User>

  2. <Custom HP Cost>
  3. user.hp
  4. </Custom HP Cost>
  5. <Cost Display Eval>
  6. var value = user.hp;
  7. $gameVariables.setValue(23, value);
  8. </Cost Display Eval>

  9. <Custom Cost Display>
  10. \c[4]\v[23]\c[0] HP
  11. </Custom Cost Display>

  12. <After Eval>
  13. user.addState(1)
  14. </After Eval>
复制代码
回复

使用道具 举报

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
回帖
194
发表于 2016-8-27 13:54:30 | 显示全部楼层
仿龙战士变身技能。
变身后每回合消耗20%的最大MP,如耗尽则复原
通过两个职业实现变身后的外形变化:变身前=1,变身后=11

角色注释:
  1. <Class 11 Battler: Dragon>
复制代码


变身技能使用后添加状态(13号)
状态特征设置为每回合消耗20%MP

  1. <Custom Turn Start Effect>
  2. if (user.mp / user.mmp <= 0) {
  3. user.removeState(13);
  4. user.changeClass(1)
  5. }
  6. </Custom Turn Start Effect>

  7. <Custom Apply Effect>
  8. user.changeClass(11)
  9. </Custom Apply Effect>

  10. <Custom Remove Effect>
  11. user.changeClass(1)
  12. </Custom Remove Effect>
复制代码


变身前技能添加标签:
  1. <Custom Show Eval>
  2. if (user.isStateAffected(13)) {
  3. visible = false;
  4. } else {
  5. visible = true;
  6. }
  7. </Custom Show Eval>
复制代码


变身后技能添加标签:
  1. <Custom Show Eval>
  2. if (user.isStateAffected(13)) {
  3. visible = true;
  4. } else {
  5. visible = false;
  6. }
  7. </Custom Show Eval>
复制代码

回复

使用道具 举报

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
回帖
194
发表于 2016-8-27 13:55:11 | 显示全部楼层
顺便问一下,为所有队友附加state的语句应该怎么写?
回复

使用道具 举报

梦石
0
星屑
283
在线时间
354 小时
注册时间
2015-2-13
回帖
40

开拓者

发表于 2016-8-29 15:10:30 | 显示全部楼层
本帖最后由 markoray 于 2016-8-29 15:22 编辑

[pre lang="javascript"]<Custom React Effect>
if (target.barrierPoints() <= 0) {
if (target.mp > 0) {
if (Math.random() < 0.1) {
value = 0;
target.startAnimation(151);
}
value *= 0.5;
value = Math.floor(value)
if (value > 0) {
target.gainMp(~~(- value * 0.25));
target.startAnimation(151);
}
};
if (target.mp == 0) {
target.removeState(58);
}
};
</Custom React Effect>[/pre]
用LZ所说的YEP插件实现的魔法盾技能,在拥有【58】状态时,有10%概率无视伤害,否则伤害的一半将由魔法值承担,一点魔法值可以抵消4点伤害,显示动画【151】。
如果该目标的魔法值为0,那么移除状态【58】。
如果同时被添加了防护盾barrier,那么就优先扣除防护盾值。
对于治疗效果是不会触发的。
回复

使用道具 举报

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
回帖
194
发表于 2016-8-29 16:22:02 | 显示全部楼层
markoray 发表于 2016-8-29 15:10
if (target.barrierPoints()  0) {
if (Math.random() < 0.1) {
value = 0;

有点问题,比如当前MP不为0但又小于伤害值的1/8时会导致透支

点评

可以再加一个判断如果Mp不足以支付抵消的值,那就直接跳过,或者一次全部扣除好了(偷懒主义者)  发表于 2016-8-29 16:53
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2016-8-29 17:12:03 | 显示全部楼层
1、通过分歧来做出过个伤害公式,
其實伤害算式本身己可執行一定程度分歧處理
例
敵属性1和属性3的有効度高的一方採用
Math.max(a.atk * b.elementRate(1),a,atk * b.elementRate(3))
敵人防禦時的受別的傷害双倍,
a.atk * (b.isGuard() ? 4 * b.grd : 1)
攻撃方瀕死時(下方算式為最大hp小於20%)威力上升(2倍)的技能
a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部