Jump to content
AJNR

Skill Ideas, Will these work?

Recommended Posts

I'm creating a Project, and it's gameplay is very simple and basic. However, there are some skills that I would like to create but not sure if they would work without custom scripts. Along with how to make these skills if they are possible. So all this is, is just :

 

I have this Skill Idea, Will it be possible?

If it is, how would I be able to create?

Can I create it without making a whole script for it?

If I do need a script, can you help me?

 

So here goes nothing:

 

The Base

 

The base of my skills are the following formula:

b.Attack(a,b,power,type)
# Power being the Percentage of the Skill's Power (eg. 50 is 50% and 120 is 120%)
# Type is simply one of two types, "Physical" and "Magical"

The formula refers to the following

def Attack(a, b, power, type)
  if a.enemy?
  case type
    when "physical"
      c = (a.atk * 0.4.to_f) + 4
      d = (c * power) * a.atk
      e = (d / b.def.to_f) / 50.to_f + 2
      e.to_i
    when "magical"
      c = (a.mat * 0.4.to_f) + 4
      d = (c * power) * a.mat
      e = (d / b.mdf.to_f) / 50.to_f + 2
      e.to_i
  end
  else
  case type
    when "physical"
      c = (a.level * 0.8.to_f) + 4
      d = (c * power) * a.atk
      e = (d / b.def.to_f) / 50.to_f + 2
      e.to_i
    when "magical"
      c = (a.level * 0.8.to_f) + 4
      d = (c * power.to_f) * a.mat
      e = (d / b.mdf.to_f) / 50.to_f + 2
      e.to_i
  end
  end
end

THANKS TO XYPHER AND GALV FOR HELPING ME CREATE THIS

In a nutshell, the following would look like this as a regular formula without using scripts

(((a.level * 0.8 + 4) * 80 * User.Offense) / Target.Defense) / 50 + 2

It might look familiar, it's built off the base of Pokemon's Damage Formula (because of the lower parameters of this project)

 

 

 

The Ideas

 

The Multi-Strike Skill

 

 

The skill is simple to say, but kind of hard to do. The Multi-Strike is a Skill that has +1 Repeats, however, I would like to know if it's possible to make the amount of repeated strikes calculated by chance? Along with increasing the power of the skill for each repeat of the skill. So for example:

 

Multi-Strike is capable of hitting 4 times. However, the chance of getting the 2nd Strike is 100%, the 3rd Strike is 75% and the 4th Strike is 50%. Every time the Strike is repeated, the power increases by 20 (Power being part of the skill template in the first spoiler). So to kind of show an example in RGSS3:

def Multi-Strike(a, b, power, type, reduce, max) 
    case type
     when "physical"
      c = (a.level * 0.8.to_f) + 4
      d = (c * power) * a.atk
      e = (d / b.def.to_f) / 50.to_f + 2 * (1 + ((power / 100.to_f) * current.repeat)
     when "magical"
      c = (a.level * 0.8.to_f) + 4
      d = (c * power) * a.mat
      e = (d / b.mdf.to_f) / 50.to_f + 2 * (1 + ((power / 100.to_f) * current.repeat)
     end
 loop
  if current.repeat != max
   chance = rand(100) + (a.luk / 5)
     if chance <= (100 - reduce * current.repeat)
       e
     else
       break_loop
    else
     break_loop
  end
end

So if I use

Multi-Strike(a, b, 50, "physical", 18, 5) 

Then it would be intended to process the following:

 1st Strike has 100% Chance of occurring and deals 100% Damage

  2nd Strike has 82% Chance of occurring and deals 150% Damage

   3rd Strike has 64% Chance of occurring and deals 200% Damage

    4th Strike has 46% Chance of occurring and deals 250% Damage

     5th Strike has 28% Chance of occurring and deals 300% Damage

 

 

 

The Payback Skill

 

 

The skill is only difficult to get because I don't know how to get feedback of the User's Status at the start of the skill's casting and at it's execution. The Payback Skill is suppose to always occur at the end of the turn. If the User takes damage during the casting of the skill, then the skill's power is increased. So to kind of show an example in RGSS3:

def Payback(a, b, power, type, mult)
 m = a.hp    
 action_wait # the gap between the User casting the skill and the User executing the skill
  n = a.hp
    if m > n
      case type
        when "physical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power * (mult / 100.to_f)) * a.atk
          e = (d / b.def.to_f) / 50.to_f + 2
        when "magical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power * (mult / 100.to_f)) * a.mat
          e = (d / b.mdf.to_f) / 50.to_f + 2
        end 
    else
       case type
        when "physical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power) * a.atk
          e = (d / b.def.to_f) / 50.to_f + 2
        when "magical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power) * a.mat
          e = (d / b.mdf.to_f) / 50.to_f + 2
        end 
      end

So if I use:

Payback(a, b, 120, physical, 250)

Then it would be intended to process the following:

 The User casts the Payback Skill

 (Health is recorded in Local Variable m)

  End of Turn is reached

  (Health is recorded in Local Variable n)

   If the User was hit during the Turn, the Skill will deal 120% with the 250% multiplier making it 300% Damage

   If the User was not hit during the Turn, the Skill will deal 120% Damage 

 

 

 

The Uppercut

 

 

This one I know can be done with a Script that supports removal from battle, which I believe there is. It's just dealing damage to an Enemy, then dealing extra damage if they have a certain state (Eg. "Flying") or removing them from battle temporarily if they don't have the certain State. But as a precaution for Boss Battles, there will be an Element called "Removal" that Bosses will be immune to.

So this is kind of what it would look like it RGSS3:

def Uppercut(a, b, power, type, bonus, eject)
    if b.state(100) ? # State ID 100 is "Flying"
      case type
        when "physical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power * (bonus / 100.to_f)) * a.atk
          e = (d / b.def.to_f) / 50.to_f + 2
          e.to_i
        when "magical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power * (bonus / 100.to_f)) * a.mat
          e = (d / b.mdf.to_f) / 50.to_f + 2
          e.to_i
        end 
    else
       case type
        when "physical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power) * a.atk
          e = (d / b.def.to_f) / 50.to_f + 2
          e.to_i
        if b.element_rate(20) != 0 ? # "Eject" Element Rate is NOT 0%?
          case eject
            when "1";     b.add_state(150) #Eject State, Lasts 1 Turn
            when "2";     b.add_state(151) #Eject State, Lasts 2 Turns
            when "3";     b.add_state(151) #Eject State, Lasts 3 Turns
          end
        else
       end
        when "magical"
          c = (a.level * 0.8.to_f) + 4
          d = (c * power) * a.mat
          e = (d / b.mdf.to_f) / 50.to_f + 2
          e.to_i
        if b.element_rate(20) != 0 ? # "Eject" Element Rate is NOT 0%?
          case eject
            when "1";     b.add_state(150) #Eject State, Lasts 1 Turn
            when "2";     b.add_state(151) #Eject State, Lasts 2 Turns
            when "3";     b.add_state(151) #Eject State, Lasts 3 Turns
          end
        else
       end
      end 
     end

So if I use:

Uppercut(a, b, 120, magical, 200, 2)

Then it would be intended to process the following:

User executes Uppercut Skill

  If the Enemy is Flying, the Skill will deal 120% Damage with a 200% Bonus dealing 240% Damage, there is no ejection though

  If the Enemy is not Flying, the Skill will deal 120% Damage

   If the Non-Flying Enemy's "Eject" Element Rate is not 0%, then they are Ejected for 2 turns

   If the Non-Flying Enemy's "Eject" Element Rate is 0%, then they are not Ejected

 

 

 

This surely is a mouthful, but it'd be cool to see if these could be pulled off in the VX Ace Engine.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×