Project1

标题: 关于状态和特技的拓展,望大神指导 [打印本页]

作者: 老王的忧郁    时间: 2016-3-19 01:12
标题: 关于状态和特技的拓展,望大神指导
本帖最后由 老王的忧郁 于 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回合。
      在状态的注释里填写以下代码:

JAVASCRIPT 代码复制
  1. <Custom Battle Effect>
  2. user._unstableAnomaly = 0
  3. </Custom Battle Effect>
  4.  
  5. <Custom React Effect>
  6. if (target._unstableAnomaly < 1 && value > target.hp) {
  7. target._unstableAnomaly = 1;
  8. value = 0;
  9. target.gainBarrier(target.mhp * 4, 5);
  10. target.startAnimation(37);
  11. };
  12. </Custom React Effect>


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

JAVASCRIPT 代码复制
  1. <Custom Respond Effect>
  2. user.gainHp(-value);
  3. if (user.hp <= 0) { user.performCollapse() };
  4. </Custom Respond Effect>

   
3、被攻击回血的技能;
      效果:当使用者生命值小于30%,将有50%的几率恢复自身最大生命值的35%生命值。

JAVASCRIPT 代码复制
  1. <Custom Deselect Effect>
  2. if (target.hpRate() < 0.3) {
  3. if (Math.random() < 0.5) {
  4. target.gainHp(~~(target.mhp * 0.35));
  5. target.startAnimation(41);
  6. target.startDamagePopup();
  7. target.clearResult();
  8. }
  9. }
  10. </Custom Deselect Effect>


总之,  ♦ 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等、
      
       这样的特技,该用什么方法比较容易实现呢?   {主技能无伤害公式,事件强制行动使用多个数据库中的其他特技(比较费数据库名额)?或者用脚本该如何写?}


作者: 老王的忧郁    时间: 2016-3-19 21:32
本帖最后由 老王的忧郁 于 2016-3-19 21:49 编辑

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

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

JAVASCRIPT 代码复制
  1. <Custom Establish Effect>
  2. if (target === origin) {
  3. if (target.hp <= 0) {
  4. user.die();
  5. user.performCollapse();
  6. }
  7. }
  8. </Custom Establish Effect>
  9.  
  10. <Custom Respond Effect>
  11. if (user === origin) {
  12. if (target.hp <= 0) {
  13. user.die();
  14. user.performCollapse();
  15. }
  16. }
  17. </Custom Respond Effect>

作者: raketenfaust02    时间: 2016-8-27 13:48
本帖最后由 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>
复制代码

作者: raketenfaust02    时间: 2016-8-27 13:54
仿龙战士变身技能。
变身后每回合消耗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>
复制代码


作者: raketenfaust02    时间: 2016-8-27 13:55
顺便问一下,为所有队友附加state的语句应该怎么写?
作者: markoray    时间: 2016-8-29 15:10
本帖最后由 markoray 于 2016-8-29 15:22 编辑

JAVASCRIPT 代码复制
  1. <Custom React Effect>
  2. if (target.barrierPoints() <= 0) {
  3. if (target.mp > 0) {
  4. if (Math.random() < 0.1) {
  5. value = 0;
  6. target.startAnimation(151);
  7. }
  8. value *= 0.5;
  9. value = Math.floor(value)
  10. if (value > 0) {
  11. target.gainMp(~~(- value * 0.25));
  12. target.startAnimation(151);
  13. }
  14. };
  15. if (target.mp == 0) {
  16. target.removeState(58);
  17. }
  18. };
  19. </Custom React Effect>

用LZ所说的YEP插件实现的魔法盾技能,在拥有【58】状态时,有10%概率无视伤害,否则伤害的一半将由魔法值承担,一点魔法值可以抵消4点伤害,显示动画【151】。
如果该目标的魔法值为0,那么移除状态【58】。
如果同时被添加了防护盾barrier,那么就优先扣除防护盾值。
对于治疗效果是不会触发的。
作者: raketenfaust02    时间: 2016-8-29 16:22
markoray 发表于 2016-8-29 15:10
if (target.barrierPoints()  0) {
if (Math.random() < 0.1) {
value = 0;

有点问题,比如当前MP不为0但又小于伤害值的1/8时会导致透支
作者: tseyik    时间: 2016-8-29 17:12
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





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