WHAT ARE YOU WORKING ON NOW?
Posts
post=154115
Having given up on recording anymore of Eternal Paradise due to lack of funds (Grinding doesn't help either, funds just get put into healing again >.>) I'm gonna actually try and start mapping out the first few floors of the tower in my game.
when a player has no more funds you should flash "INSUFFICIENT FUNDS" across the screen in green 16pt courier
Coding in user stat tracking for my custom minecraft smp server, and integrating it with its website.
So far I have the server keeping track of and saving the number of blocks placed and removed and updating the players' stats to a database either every hour or when a player logs out. Planning on keeping track of amount of time spent online, and breaking down the blocks removed to have some things like total number of diamonds mined, and such.
So far I have the server keeping track of and saving the number of blocks placed and removed and updating the players' stats to a database either every hour or when a player logs out. Planning on keeping track of amount of time spent online, and breaking down the blocks removed to have some things like total number of diamonds mined, and such.
post=154136post=154115when a player has no more funds you should flash "INSUFFICIENT FUNDS" across the screen in green 16pt courier
Having given up on recording anymore of Eternal Paradise due to lack of funds (Grinding doesn't help either, funds just get put into healing again >.>) I'm gonna actually try and start mapping out the first few floors of the tower in my game.
Change that to comic sans and you're on to something.
I'm scripting in all of the new numbahz for Karsu and I's project. Tomorrow I should have template enemies that you can use a normal attack against!
In addition, I am doing lots and lots and lots and lots of mapping. The first... sub-overworld (?) area is at least ten 50x50 chunks. It's a "sub-overworld" because there are four major cave systems that lead to each of the game's numerous "real" dungeons.
In addition, I am doing lots and lots and lots and lots of mapping. The first... sub-overworld (?) area is at least ten 50x50 chunks. It's a "sub-overworld" because there are four major cave systems that lead to each of the game's numerous "real" dungeons.
post=153881post=153853ctrl-h
Going through Yanfly Engine Zealous - Party Selection System changing all the "next_exp" into "next_exp_s"
Bored.
Might buy dragon quest ix...
Damn...
Revamping the building system in flower to make it feel a bit more up to the standard of quality that the rest of the game is in (especially after redoing the battle system).
Working on Megaman: Revenge of the Fallen as my primary project.
Followed by Amulet of Fate, which is my long time RPG of 10+ years and it still isn't finished dammit!
On the side, I'm slowly working on another Zelda Classic quest....no details since I'm not even sure myself if I'll finish it...
Followed by Amulet of Fate, which is my long time RPG of 10+ years and it still isn't finished dammit!
On the side, I'm slowly working on another Zelda Classic quest....no details since I'm not even sure myself if I'll finish it...
Currently fugly (need to kill the space taken up by non-existent stat icons), but hey, I have all 3210525 numberz working, as well as the equip menu filtering the numbers to only show those being affected by the equipment swap!
Now I'm working on actually putting the game's formulas into the game so that I can start making enemies. This should be simple since stuff like damage is literally just "PWR - DEF."
post=154278
Now I'm working on actually putting the game's formulas into the game so that I can start making enemies. This should be simple since stuff like damage is literally just "PWR - DEF."
As long as you never ever even think of quadratic accuracy again
Working on numbers, also despairing at code.
post=154280
As long as you never ever even think of quadratic accuracy again
It is so much better. It's just ACC - EVA now, where ACC is (DEX + 10) * 3.34 + Equips and EVA is (5 + Equips) * (AGI - 5) / 15. DEX and AGI are standardized at 20 and do not grow with levels.
post=154283
A mace is more subtle than a club.
Haha, Subtlety is based on Charisma. I threw the Charisma and Piety tags on the mace just to test them. =P
(The stat itself makes you less likely to be targeted in combat.)
Started as some request for movement and then I decided to make it into a full CBS.
(Trying to find my old snes cartridge to finish it )
(Trying to find my old snes cartridge to finish it )
post=154278
Currently fugly (need to kill the space taken up by non-existent stat icons), but hey, I have all 3210525 numberz working, as well as the equip menu filtering the numbers to only show those being affected by the equipment swap!
Now I'm working on actually putting the game's formulas into the game so that I can start making enemies. This should be simple since stuff like damage is literally just "PWR - DEF."
Actually on vx its (atk x 4) - (def x 2) MWHAHAHAHA. Or something.
Mapping now.
post=154378Actually in VX you can edit it at will.post=154278Actually on vx its (atk x 4) - (def x 2) MWHAHAHAHA. Or something.
craze
Mapping now.
Craze and I go a long ways out of our way to make our numbers as perfect as possible.
ain't that right crazebro
Idida, I am about to blow your mind.
chaos: Yeah, yeah we do.
I am currently setting up enemy basic actions and listening to... KH2 music. The hell?
Philadelphia eschews normal attacks in favor of "basic actions" - skills that cost nothing to execute. This means that instead of mashing Boring Slash, you're constantly throwing fireballs, laying toxins down and doing crazy tiger dives. However, enemies are the exact same way!
Yes, Karsuman and I's project/revival is named after a famous city.
# Adds many new stats to the game.
#===============================================================================
#===============================================================================
# RPG::BaseItem
#===============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :str
attr_accessor :dex
attr_accessor :con
attr_accessor :int
attr_accessor :wis
attr_accessor :cha
attr_accessor :pie
attr_accessor :aagi
attr_accessor :wpwr
attr_accessor :spwr
attr_accessor :wdef
attr_accessor :sdef
attr_accessor :wacc
attr_accessor :sacc
attr_accessor :weva
attr_accessor :seva
attr_accessor :wcri
attr_accessor :scri
attr_accessor :wcdmg
attr_accessor :scdmg
attr_accessor :wpen
attr_accessor :spen
attr_accessor :hpwr
attr_accessor :hitk
attr_accessor :apwr
attr_accessor :adef
attr_accessor :epwr
attr_accessor :sub
attr_accessor :stat_per2
#--------------------------------------------------------------------------
# common cache: yem_cache_baseitem_eo2
#--------------------------------------------------------------------------
def yem_cache_baseitem_eo2
return if @cached_baseitem_eo2; @cached_baseitem_eo2 = true
@str = 0; @dex = 0; @con = 0; @int = 0; @wis = 0; @cha = 0; @pie = 0;
@aagi = 0; @wpwr = 0; @spwr = 0; @wdef = 0; @sdef = 0; @wacc = 0; @sacc = 0;
@weva = 0; @seva = 0; @wcri = 0; @scri = 0; @hpwr = 0; @hitk = 0; @apwr = 0;
@adef = 0; @epwr = 0; @sub = 0; @wcdmg = 0; @scdmg = 0; @wpen = 0; @spen = 0
@stat_per2 = {
:str => 0, :dex => 0, :con => 0, :int => 0, :wis => 0, :cha => 0, :pie => 0,
:aagi => 0, :wpwr => 0, :spwr => 0, :wdef => 0, :sdef => 0, :wacc => 0,
:sacc => 0, :weva => 0, :seva => 0, :wcri => 0, :scri => 0, :hpwr => 0,
:hitk => 0, :apwr => 0, :adef => 0, :epwr => 0, :sub => 0, :wcdmg => 0,
:scdmg => 0, :wpen => 0, :spen => 0}
self.note.split(/+/).each { |line|
case line
#---
when YEM::REGEXP::BASEITEM::STAT_SET
case $1.upcase
when "STR"; @str = $2.to_i
when "DEX"; @dex = $2.to_i
when "CON"; @con = $2.to_i
when "INT"; @int = $2.to_i
when "WIS"; @wis = $2.to_i
when "CHA"; @cha = $2.to_i
when "PIE"; @pie = $2.to_i
when "AAGI"; @aagi = $2.to_i
when "WPWR"; @wpwr = $2.to_i
when "SPWR"; @spwr = $2.to_i
when "WDEF"; @wdef = $2.to_i
when "SDEF"; @sdef = $2.to_i
when "WACC"; @wacc = $2.to_i
when "SACC"; @sacc = $2.to_i
when "WEVA"; @weva = $2.to_i
when "SEVA"; @seva = $2.to_i
when "WCRI"; @wcri = $2.to_i
when "SCRI"; @scri = $2.to_i
when "WCDMG"; @wcdmg = $2.to_i
when "SCDMG"; @scdmg = $2.to_i
when "WPEN"; @wpen = $2.to_i
when "SPEN"; @spen = $2.to_i
when "HPWR"; @hpwr = $2.to_i
when "HITK"; @hitk = $2.to_i
when "APWR"; @apwr = $2.to_i
when "ADEF"; @adef = $2.to_i
when "EPWR"; @epwr = $2.to_i
when "SUB"; @sub = $2.to_i
end
#---
when YEM::REGEXP::BASEITEM::STAT_PER
case $1.upcase
when "STR"; @stat_per2 = $2.to_i
when "DEX"; @stat_per2 = $2.to_i
when "CON"; @stat_per2 = $2.to_i
when "INT"; @stat_per2 = $2.to_i
when "WIS"; @stat_per2 = $2.to_i
when "CHA"; @stat_per2 = $2.to_i
when "PIE"; @stat_per2 = $2.to_i
when "AAGI"; @stat_per2 = $2.to_i
when "WPWR"; @stat_per2 = $2.to_i
when "SPWR"; @stat_per2 = $2.to_i
when "WDEF"; @stat_per2 = $2.to_i
when "SDEF"; @stat_per2 = $2.to_i
when "WACC"; @stat_per2 = $2.to_i
when "SACC"; @stat_per2 = $2.to_i
when "WEVA"; @stat_per2 = $2.to_i
when "SEVA"; @stat_per2 = $2.to_i
when "WCRI"; @stat_per2 = $2.to_i
when "SCRI"; @stat_per2 = $2.to_i
when "WCDMG"; @stat_per2 = $2.to_i
when "SCDMG"; @stat_per2 = $2.to_i
when "WPEN"; @stat_per2 = $2.to_i
when "SPEN"; @stat_per2 = $2.to_i
when "HPWR"; @stat_per2 = $2.to_i
when "HITK"; @stat_per2 = $2.to_i
when "APWR"; @stat_per2 = $2.to_i
when "ADEF"; @stat_per2 = $2.to_i
when "EPWR"; @stat_per2 = $2.to_i
when "SUB"; @stat_per2 = $2.to_i
end
#---
end
} # end self.note.split
end # yem_cache_baseitem_eo
end # RPG::BaseItem
#===============================================================================
# Scene_Title
#===============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# alias method: load_bt_database
#--------------------------------------------------------------------------
alias load_bt_database_eo2 load_bt_database unless $@
def load_bt_database
load_bt_database_eo2
load_eo2_cache
end
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
alias load_database_eo2 load_database unless $@
def load_database
load_database_eo2
load_eo2_cache
end
#--------------------------------------------------------------------------
# new method: load_eo2_cache
#--------------------------------------------------------------------------
def load_eo2_cache
groups =
for group in groups
for obj in group
next if obj == nil
obj.yem_cache_baseitem_eo2 if obj.is_a?(RPG::BaseItem)
#~ obj.yem_cache_weapon_eo2 if obj.is_a?(RPG::Weapon)
#~ obj.yem_cache_armour_eo2 if obj.is_a?(RPG::Armor)
end
end
end
end # Scene_Title
#===============================================================================
# Game_Actor
#===============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# alias method: setup
#--------------------------------------------------------------------------
alias setup_eo2 setup unless $@
def setup(actor_id)
setup_eo2(actor_id)
end
#--------------------------------------------------------------------------
# overwrite method: base_maxhp
#--------------------------------------------------------------------------
def base_maxhp
n = eval(YEM::EQUIP::BASE_STAT)
percent = 100
for item in equips.compact
percent += aptitude(item.stat_per, :hp)
end
n *= percent / 100.0
for item in equips.compact
n += aptitude(item.maxhp, :hp)
end
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_maxmp
#--------------------------------------------------------------------------
def base_maxmp
n = eval(YEM::EQUIP::BASE_STAT)
percent = 100
for item in equips.compact
percent += aptitude(item.stat_per, :mp)
end
n *= percent / 100.0
for item in equips.compact
n += aptitude(item.maxmp, :mp)
end
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_atk
#--------------------------------------------------------------------------
def base_atk
# Not used!
n = 0
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_def
#--------------------------------------------------------------------------
def base_def
# Not used!
n = 0
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_spi
#--------------------------------------------------------------------------
def base_spi
# Not used!
n = 0
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_agi
#--------------------------------------------------------------------------
def base_agi
# Hello, my name is Speed/SPD. "Real" AGI is .aagi
n = (aagi - 5) * 2
for item in equips.compact
n += item.agi
end
percent = 100
for item in equips.compact
percent += item.stat_per
end
n *= percent / 100.0
return Integer(n)
end
def str
# Strength/STR
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 21 # Vi
when 3; n = 10 # Catalina
when 4; n = 26 # Bertram
when 5; n = 12 # Taryn
when 6; n = 22 # Dio
when 7; n = 28 # Roberto
when 8; n = 18 # Laufey
when 9; n = 22 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.str
end
return Integer(n)
end
def dex
# Dexterity/DEX
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 22 # Vi
when 3; n = 20 # Catalina
when 4; n = 23 # Bertram
when 5; n = 20 # Taryn
when 6; n = 15 # Dio
when 7; n = 23 # Roberto
when 8; n = 28 # Laufey
when 9; n = 24 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.dex
end
return Integer(n)
end
def con
# Constitution/CON
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 13 # Vi
when 3; n = 13 # Catalina
when 4; n = 29 # Bertram
when 5; n = 19 # Taryn
when 6; n = 23 # Dio
when 7; n = 17 # Roberto
when 8; n = 24 # Laufey
when 9; n = 26 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.con
end
return Integer(n)
end
def int
# Intelligence/INT
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 21 # Vi
when 3; n = 28 # Catalina
when 4; n = 13 # Bertram
when 5; n = 25 # Taryn
when 6; n = 14 # Dio
when 7; n = 11 # Roberto
when 8; n = 23 # Laufey
when 9; n = 10 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.int
end
return Integer(n)
end
def wis
# Wisdom/WIS
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 13 # Vi
when 3; n = 26 # Catalina
when 4; n = 18 # Bertram
when 5; n = 20 # Taryn
when 6; n = 22 # Dio
when 7; n = 13 # Roberto
when 8; n = 12 # Laufey
when 9; n = 26 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.wis
end
return Integer(n)
end
def cha
# Charisma/CHA
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 15 # Vi
when 3; n = 24 # Catalina
when 4; n = 10 # Bertram
when 5; n = 28 # Taryn
when 6; n = 16 # Dio
when 7; n = 23 # Roberto
when 8; n = 22 # Laufey
when 9; n = 10 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.cha
end
return Integer(n)
end
def pie
# Piety/PIE
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 24 # Vi
when 3; n = 13 # Catalina
when 4; n = 20 # Bertram
when 5; n = 12 # Taryn
when 6; n = 27 # Dio
when 7; n = 19 # Roberto
when 8; n = 13 # Laufey
when 9; n = 19 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.pie
end
return Integer(n)
end
def aagi
# Agility/AGI
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 27 # Vi
when 3; n = 22 # Catalina
when 4; n = 17 # Bertram
when 5; n = 20 # Taryn
when 6; n = 18 # Dio
when 7; n = 22 # Roberto
when 8; n = 25 # Laufey
when 9; n = 19 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.aagi
end
return Integer(n)
end
def wpwr
# Weapon Power/W-PWR
n = 0
for item in equips.compact
n += item.wpwr
end
mod = str * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def spwr
# Spell Power/S-PWR
n = 0
for item in equips.compact
n += item.spwr
end
mod = int * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wdef
# Weapon Defense/W-DEF
n = 0
for item in equips.compact
n += item.wdef
end
mod = con * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def sdef
# Spell Defense/S-DEF
n = 0
for item in equips.compact
n += item.sdef
end
mod = wis * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wacc
# Weapon Accuracy/W-ACC
n = 100
for item in equips.compact
n += item.wacc
end
mod = (dex + 10) * 3.34
n *= mod / 100.00
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def sacc
# Spell Accuracy/S-ACC
n = 100
for item in equips.compact
n += item.sacc
end
mod = (dex + 10) * 3.34
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def weva
# Weapon Evasion/W-EVA
n = 5
for item in equips.compact
n += item.weva
end
mod = aagi * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def seva
# Spell Evasion/S-EVA
n = 5
for item in equips.compact
n += item.seva
end
mod = aagi * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wcri
# Weapon Critical/W-CRI
n = 3
n += ((dex - 12) / 5) ^ 2.8
n = 1 if n < 1
for item in equips.compact
n += item.wcri
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def scri
# Spell Critical/S-CRI
n = 3
n += ((dex - 12) / 5) ^ 2.8
n = 1 if n < 1
for item in equips.compact
n += item.scri
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wcdmg
# Weapon Critical Damage/W-CDMG
n = 5
n += str * (1.00 + level / 4)
for item in equips.compact
n += item.wcdmg
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def scdmg
# Spell Critical Damage/S-CDMG
n = 5
n += int * (1.00 + level / 3)
for item in equips.compact
n += item.scdmg
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wpen
# Weapon Penetration/W-PEN
n = 0
for item in equips.compact
n += item.wpen
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def spen
# Spell Penetration/S-PEN
n = 0
for item in equips.compact
n += item.spen
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def hpwr
# Heal Power/H-PWR
n = pie
n += level * 4 * (pie - 5) / 15
for item in equips.compact
n += item.hpwr
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def hitk
# Heal Intake/H-ITK
n = con
n += level * 4 * con / 20
for item in equips.compact
n += item.hitk
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def apwr
# Ailment Power/A-PWR
n = cha
n += level * (cha / 5)
for item in equips.compact
n += item.apwr
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def adef
# Ailment Defense/A-DEF
n = wis
n += level * (wis / 5)
for item in equips.compact
n += item.adef
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def epwr
# Enchant Power/E-PWR
n = pie
n += level * (pie / 5)
for item in equips.compact
n += item.epwr
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def sub
# Subtlety/SUB
n = (cha - 5) * 2
for item in equips.compact
n += item.sub
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
#--------------------------------------------------------------------------
# UNUSED REMNANTS (but not the last one)
#--------------------------------------------------------------------------
def hit
# Not used!
n = 0; return Integer(n)
end
def eva
# Not used!
n = 0; return Integer(n)
end
def cri
# Not used!
n = 0; return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: odds
#--------------------------------------------------------------------------
def odds
n = 50 - sub
n = 1 if n < 1
return Integer(n)
end
end # Game_Actor
#===============================================================================
# Window_EquipStat
#===============================================================================
class Window_EquipStat < Window_Base
#--------------------------------------------------------------------------
# draw_actor_stats
#--------------------------------------------------------------------------
def draw_actor_stats
dx = 0; dy = 0
arrow = YEM::EQUIP::VOCAB
for stat in YEM::EQUIP::SHOWN_STATS
icon = Icon.stat(@actor, stat)
case stat
when :maxhp
text = "Health"
value2 = @actor.maxhp
value1 = @clone.maxhp
when :maxmp
text = "Energy"
value2 = @actor.maxmp
value1 = @clone.maxmp
when :str
text = "Strength"
value2 = @actor.str
value1 = @clone.str
when :dex
text = "Dexterity"
value2 = @actor.dex
value1 = @clone.dex
when :con
text = "Constitution"
value2 = @actor.con
value1 = @clone.con
when :int
text = "Intelligence"
value2 = @actor.int
value1 = @clone.int
when :wis
text = "Wisdom"
value2 = @actor.wis
value1 = @clone.wis
when :cha
text = "Charisma"
value2 = @actor.cha
value1 = @clone.cha
when :pie
text = "Piety"
value2 = @actor.pie
value1 = @clone.pie
when :aagi
text = "Agility"
value2 = @actor.aagi
value1 = @clone.aagi
when :wpwr
text = "Wpn Power"
value2 = @actor.wpwr
value1 = @clone.wpwr
when :spwr
text = "Spl Power"
value2 = @actor.spwr
value1 = @clone.spwr
when :wdef
text = "Wpn Defense"
value2 = @actor.wdef
value1 = @clone.wdef
when :sdef
text = "Spl Defense"
value2 = @actor.sdef
value1 = @clone.sdef
when :wacc
text = "Wpn Accuracy"
value2 = @actor.wacc
value1 = @clone.wacc
when :sacc
text = "Spl Accuracy"
value2 = @actor.sacc
value1 = @clone.sacc
when :weva
text = "Wpn Evasion"
value2 = @actor.weva
value1 = @clone.weva
when :seva
text = "Spl Evasion"
value2 = @actor.seva
value1 = @clone.seva
when :wcri
text = "Wpn Critical"
value2 = @actor.wcri
value1 = @clone.wcri
when :scri
text = "Spl Critical"
value2 = @actor.scri
value1 = @clone.scri
when :wpen
text = "Wpn Penetration"
value2 = @actor.wpen
value1 = @clone.wpen
when :spen
text = "Spl Penetation"
value2 = @actor.spen
value1 = @clone.spen
when :wcdmg
text = "Wpn Crit Dmg"
value2 = @actor.wcdmg
value1 = @clone.wcdmg
when :scdmg
text = "Spl Crit Dmg"
value2 = @actor.scdmg
value1 = @clone.scdmg
when :hpwr
text = "Heal Power"
value2 = @actor.hpwr
value1 = @clone.hpwr
when :hitk
text = "Heal Intake"
value2 = @actor.hitk
value1 = @clone.hitk
when :apwr
text = "Ailment Power"
value2 = @actor.apwr
value1 = @clone.apwr
when :adef
text = "Ailment Defense"
value2 = @actor.adef
value1 = @clone.adef
when :epwr
text = "Enchant Power"
value2 = @actor.epwr
value1 = @clone.epwr
when :sub
text = "Subtlety"
value2 = @actor.sub
value1 = @clone.sub
when :agi # Speed
text = "Speed"
value2 = @actor.agi
value1 = @clone.agi
else; next
end
next if value1 == value2
draw_icon(icon, dx, dy); dx += 24
self.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE
self.contents.font.color = system_color
self.contents.draw_text(dx, dy, 60, WLH, text, 0); dx += 60
self.contents.font.color = normal_color
self.contents.draw_text(dx, dy, 45, WLH, value2, 2); dx += 45
self.contents.font.color = system_color
self.contents.font.size = Font.default_size
self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30
if @equip_index == nil or (@equip != nil and !@actor.equippable?(@equip))
self.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE
self.contents.font.color = normal_color
self.contents.draw_text(dx, dy, 45, WLH, value2, 2)
end
dx = 0; dy += WLH
end
end
#--------------------------------------------------------------------------
# draw_clone_stats
#--------------------------------------------------------------------------
def draw_clone_stats
dx = 0; dy = 0
last_hp = @actor.hp
last_mp = @actor.mp
for stat in YEM::EQUIP::SHOWN_STATS
case stat
when :maxhp
value2 = @actor.maxhp
value1 = @clone.maxhp
when :maxmp
value2 = @actor.maxmp
value1 = @clone.maxmp
when :str
value2 = @actor.str
value1 = @clone.str
when :dex
value2 = @actor.dex
value1 = @clone.dex
when :con
value2 = @actor.con
value1 = @clone.con
when :int
value2 = @actor.int
value1 = @clone.int
when :wis
value2 = @actor.wis
value1 = @clone.wis
when :cha
value2 = @actor.cha
value1 = @clone.cha
when :pie
value2 = @actor.pie
value1 = @clone.pie
when :aagi
value2 = @actor.aagi
value1 = @clone.aagi
when :wpwr
value2 = @actor.wpwr
value1 = @clone.wpwr
when :spwr
value2 = @actor.spwr
value1 = @clone.spwr
when :wdef
value2 = @actor.wdef
value1 = @clone.wdef
when :sdef
value2 = @actor.sdef
value1 = @clone.sdef
when :wacc
value2 = @actor.wacc
value1 = @clone.wacc
when :sacc
value2 = @actor.sacc
value1 = @clone.sacc
when :weva
value2 = @actor.weva
value1 = @clone.weva
when :seva
value2 = @actor.seva
value1 = @clone.seva
when :wcri
value2 = @actor.wcri
value1 = @clone.wcri
when :scri
value2 = @actor.scri
value1 = @clone.scri
when :wpen
value2 = @actor.wpen
value1 = @clone.wpen
when :spen
value2 = @actor.spen
value1 = @clone.spen
when :wcdmg
value2 = @actor.wcdmg
value1 = @clone.wcdmg
when :scdmg
value2 = @actor.scdmg
value1 = @clone.scdmg
when :hpwr
value2 = @actor.hpwr
value1 = @clone.hpwr
when :hitk
value2 = @actor.hitk
value1 = @clone.hitk
when :apwr
value2 = @actor.apwr
value1 = @clone.apwr
when :adef
value2 = @actor.adef
value1 = @clone.adef
when :epwr
value2 = @actor.epwr
value1 = @clone.epwr
when :sub
value2 = @actor.sub
value1 = @clone.sub
when :agi # Speed
value2 = @actor.agi
value1 = @clone.agi
else; next
end
if value1 > value2
self.contents.font.color = power_up_color
elsif value1 < value2
self.contents.font.color = power_down_color
else
next# self.contents.font.color = normal_color
end
self.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE
self.contents.draw_text(dx+159, dy, 45, WLH, value1, 2)
dx = 0; dy += WLH
end
@actor.hp = last_hp
@actor.mp = last_mp
end
end # Window_EquipStat
#===============================================================================
#
# END OF FILE
#
#===============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# new method: make_damage_values
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# In this section, you can adjust the damage formulas for the pre-existing
# weapons, skills, and items or you can make your own. To make a weapon,
# skill, or item call a different damage formula from the default, use the
# following tag in their notebox:
#
# <damage: phrase>
#
# Replace phrase with one of the values scene below. If you wish for the
# damage formula to continue multiple parts, just add more of the tag above
# and the game will calculate the damage formulas in that order.
#--------------------------------------------------------------------------
def make_damage_values(user, obj = nil)
attacker = caster = user; defender = target = self
variance = (obj == nil) ? 20 : obj.variance
dmg_hash = YEM::BATTLE_ENGINE::DAMAGE_HASH
formulas = (obj == nil) ? user.attack_formulas : obj.damage_formula
formulas +=
return if formulas.size <= 1
for formula in formulas
#---
hp_dmg = 0; mp_dmg = 0 # Reset Damage Values
healing_formula = false # Reset Healing Formula
ignore_elements = false # Reset Element Ignore
ignore_variance = false # Reset Variance Ignore
ignore_critical = false # Reset Critical Ignore
ignore_guarding = false # Reset Guard Ignore
ignore_inflates = false # Reset damage inflation
case formula
#----------------------------------------------------------------------
# <damage: phrase weapon>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This is the damage formula for regular attacks. Applied for weapons
# and enemy attacks. Replace "phrase" with the respect stat you wish
# for the normal attack to be based off of.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: spi weapon>
# <damage: agi weapon>
# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This is a default-used formula. Do not remove this.
#----------------------------------------------------------------------
when /(.*)(?:WEAPON|ATTACK)/i
atkstat = attacker.wpwr; defstat = defender.wdef; penstat = 100 - attacker.wpen
defstat = defstat * penstat / 100.0
hp_dmg = atkstat - defstat
hp_dmg = rand(2) + 1 if hp_dmg <= 0
calc_cri(attacker) if hp_dmg > 0
#----------------------------------------------------------------------
# <damage: normal>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# If you decide to use the normal skill/item formula, place this tag
# inside of the object's notebox. Note that this will not work for
# weapons and enemy attacks.
#
# Although the <damage: normal> tag has no alternatives, there are tags
# that can alter the effects of this formula. They are:
# <atk_f: x%>
# <def_f: x%>
# <spi_f: x%>
# <agi_f: x%>
# These values will base the damage formula around the specific stat
# to x%. For ATK_F and SPI_F, this allows you to break the editor limit
# of 200% and to be able to go higher. Using DEF_F and AGI_F, you can
# have skills determine their damage/healing based on the user's def
# and agi stats instead of limited to just atk and spi.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <atk_f: 500%>
# <def_f: 100%>
# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This is a default-used formula. Do not remove this.
#----------------------------------------------------------------------
when /(?:NORMAL|NORMAL SKILL|NORMAL ITEM)/
next if obj == nil
damage = obj.base_damage
next if damage == 0
if damage > 0
if obj.physical_attack
atkstat = attacker.wpwr; defstat = defender.wdef
penstat = 100 - attacker.wpen
defstat = .max
else
atkstat = attacker.spwr; defstat = defender.sdef
penstat = 100 - attacker.spen
end
defstat = defstat * penstat / 100.0
defstat = 0 if obj.ignore_defense
damage = atkstat - defstat
damage *= obj.base_damage / 100.0
elsif damage < 0
healing_formula = true
ignore_guarding = true
damage = attacker.hpwr + defender.hitk
damage *= obj.base_damage / -100.0
end
if obj.damage_to_mp
mp_dmg = damage
else
hp_dmg = damage
end
calc_cri(user, obj) if hp_dmg != 0 or mp_dmg != 0
#----------------------------------------------------------------------
# <damage: -x% current hp> <damage: +x% current hp>
# <damage: -x% current mp> <damage: +x% current mp>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will cause the target to lose x% of their current HP or MP. If
# a negative value is used for x, then the target will take damage of
# that percent. If the value is positive, the target will recover that
# percent instead. The damage is unaffected by variance, criticals, and
# elements and guarding.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: +50% current hp>
# <damage: -25% current mp>
#----------------------------------------------------------------------
when /(\d+)()CURRENT(.*)/i
percent = $1.to_i
case $3.to_s
when "HP"
hp_dmg = target.hp * percent / -100
when "MP", "SP"
mp_dmg = target.mp * percent / -100
end
healing_formula = true if percent > 0
ignore_elements = true
ignore_variance = true
ignore_critical = true
ignore_guarding = true
ignore_inflates = true
#----------------------------------------------------------------------
# <damage: -x% maxhp> <damage: +x% maxhp>
# <damage: -x% maxmp> <damage: +x% maxmp>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will cause the target to lose x% of their maximum HP or MP. If
# a negative value is used for x, then the target will take damage of
# that percent. If the value is positive, the target will recover that
# percent instead. The damage is unaffected by variance, criticals,
# elements and guarding.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: +50% maxhp>
# <damage: -25% maxmp>
#----------------------------------------------------------------------
when /(\d+)()MAX(.*)/i
percent = $1.to_i
case $3.to_s
when "HP"
hp_dmg = target.maxhp * percent / -100
when "MP", "SP"
mp_dmg = target.maxmp * percent / -100
end
healing_formula = true if percent > 0
ignore_elements = true
ignore_variance = true
ignore_critical = true
ignore_guarding = true
ignore_inflates = true
#----------------------------------------------------------------------
# <damage: hp shock>
# <damage: mp shock>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will deal damage based on the difference between the user's HP
# or MP and the target's HP or MP. If damage is dealt to HP, then the
# minimum damage possible is 1. If the damage is dealt to MP, there is
# minimum damage is 0. The damage is unaffected by variance, criticals,
# elements, and guarding.
#----------------------------------------------------------------------
when /(.*)SHOCK/i
percent = $1.to_i
case $1.to_s
when "HP"
hp_dmg = caster.hp - target.hp
hp_dmg = .max
when "MP", "SP"
mp_dmg = caster.mp - target.mp
hp_dmg = .max
end
ignore_elements = true
ignore_variance = true
ignore_critical = true
ignore_guarding = true
ignore_inflates = true
#----------------------------------------------------------------------
# <damage: x% rate>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will inflate or deflate all the damage that's been done up to
# this point in the formula to x%. This tag does not deal damage on its
# own, but instead, augments the currently existing damage done. This
# affects both HP and MP damage totalled up to the current point.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: 150% rate>
#----------------------------------------------------------------------
when /(\d+)()(?:RATE|INFLATE|DEFLATE)/i
percent = $1.to_i
@hp_damage = @hp_damage * percent / 100
@mp_damage = @mp_damage * percent / 100
next
#----------------------------------------------------------------------
# This section is dedicated to common damage adjusting. By default,
# nothing will be adjusted, but in the event you wish to adjust the
# damage, it can be done here as every attack, skill, and item will
# always run this case once and at the end of all the formulas.
#----------------------------------------------------------------------
when "COMMON DAMAGE ADJUST"
# Insert whatever common damage adjustments you want made here.
#----------------------------------------------------------------------
# Stop editting past this point.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Values created in the damage formula will be applied here to total
# HP and MP damage after undergoing variance and elemental adjustments.
#----------------------------------------------------------------------
else; next
end
#---
hp_dmg = apply_max_min(hp_dmg, healing_formula ? 2 : 1, obj)
#---
unless ignore_elements
hp_dmg = apply_element_rate(user, hp_dmg, obj)
mp_dmg = apply_element_rate(user, mp_dmg, obj)
end
@critical = false if $game_temp.force_critical == false
if (@critical and !ignore_critical) or $game_temp.force_critical
@critical = true
hp_dmg = apply_critical(hp_dmg, user, obj)
mp_dmg = apply_critical(mp_dmg, user, obj)
end
unless ignore_inflates
hp_dmg = apply_state_rates(hp_dmg, user, :hp)
mp_dmg = apply_state_rates(mp_dmg, user, :mp)
end
unless ignore_variance
hp_dmg = apply_variance(hp_dmg, variance)
mp_dmg = apply_variance(mp_dmg, variance)
end
unless ignore_guarding
hp_dmg = apply_guard(hp_dmg)
mp_dmg = apply_guard(mp_dmg)
end
#---
@hp_damage += Integer(hp_dmg)
@mp_damage += Integer(mp_dmg)
#---
end
end
#--------------------------------------------------------------------------
# new method: apply_critical
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# The following method below is a simplistic method that allows you to
# adjust the critical multiplier formula if desired.
#--------------------------------------------------------------------------
def apply_critical(damage, user, obj = nil)
modifier = user.wcdmg
if obj != nil
modifier = user.scdmg unless obj.physical_attack
modifier *= obj.base_damage / 100.0
end
damage += Integer(modifier)
return damage
end
#--------------------------------------------------------------------------
# overwrite method: calc_hit
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This method has been extracted from the default base scripts to allow for
# easier and quicker access to modifying hit rate calculations.
#--------------------------------------------------------------------------
def calc_hit(user, obj = nil)
if obj == nil # for a normal attack
physical = true
elsif obj.is_a?(RPG::Skill) # for a skill
physical = obj.physical_attack
else
return 100
end
if physical # for a physical attack
hit = user.wacc
hit -= self.weva
else
hit = user.sacc
hit -= self.seva
end
return hit
end
#--------------------------------------------------------------------------
# overwrite method: calc_eva
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This method has been extracted from the default base scripts to allow for
# easier and quicker access to modifying evasion calculations.
#--------------------------------------------------------------------------
def calc_eva(user, obj = nil)
return 0
end
#--------------------------------------------------------------------------
# new method: calc_cri
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This method has been extracted from the default base scripts to allow for
# easier and quicker access to modifying critical calculations.
#--------------------------------------------------------------------------
def calc_cri(user, obj = nil)
return if @critical
value = 0
if obj == nil
physical = true
else
value += obj.cri_rate unless obj.cri_rate == nil
physical = obj.physical_attack
end
if physical
value += user.wcri
else
value += user.scri
end
@critical = (rand(100) < value)
end
end # Game_Battler
#===============================================================================
#===============================================================================
# RPG::BaseItem
#===============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :str
attr_accessor :dex
attr_accessor :con
attr_accessor :int
attr_accessor :wis
attr_accessor :cha
attr_accessor :pie
attr_accessor :aagi
attr_accessor :wpwr
attr_accessor :spwr
attr_accessor :wdef
attr_accessor :sdef
attr_accessor :wacc
attr_accessor :sacc
attr_accessor :weva
attr_accessor :seva
attr_accessor :wcri
attr_accessor :scri
attr_accessor :wcdmg
attr_accessor :scdmg
attr_accessor :wpen
attr_accessor :spen
attr_accessor :hpwr
attr_accessor :hitk
attr_accessor :apwr
attr_accessor :adef
attr_accessor :epwr
attr_accessor :sub
attr_accessor :stat_per2
#--------------------------------------------------------------------------
# common cache: yem_cache_baseitem_eo2
#--------------------------------------------------------------------------
def yem_cache_baseitem_eo2
return if @cached_baseitem_eo2; @cached_baseitem_eo2 = true
@str = 0; @dex = 0; @con = 0; @int = 0; @wis = 0; @cha = 0; @pie = 0;
@aagi = 0; @wpwr = 0; @spwr = 0; @wdef = 0; @sdef = 0; @wacc = 0; @sacc = 0;
@weva = 0; @seva = 0; @wcri = 0; @scri = 0; @hpwr = 0; @hitk = 0; @apwr = 0;
@adef = 0; @epwr = 0; @sub = 0; @wcdmg = 0; @scdmg = 0; @wpen = 0; @spen = 0
@stat_per2 = {
:str => 0, :dex => 0, :con => 0, :int => 0, :wis => 0, :cha => 0, :pie => 0,
:aagi => 0, :wpwr => 0, :spwr => 0, :wdef => 0, :sdef => 0, :wacc => 0,
:sacc => 0, :weva => 0, :seva => 0, :wcri => 0, :scri => 0, :hpwr => 0,
:hitk => 0, :apwr => 0, :adef => 0, :epwr => 0, :sub => 0, :wcdmg => 0,
:scdmg => 0, :wpen => 0, :spen => 0}
self.note.split(/+/).each { |line|
case line
#---
when YEM::REGEXP::BASEITEM::STAT_SET
case $1.upcase
when "STR"; @str = $2.to_i
when "DEX"; @dex = $2.to_i
when "CON"; @con = $2.to_i
when "INT"; @int = $2.to_i
when "WIS"; @wis = $2.to_i
when "CHA"; @cha = $2.to_i
when "PIE"; @pie = $2.to_i
when "AAGI"; @aagi = $2.to_i
when "WPWR"; @wpwr = $2.to_i
when "SPWR"; @spwr = $2.to_i
when "WDEF"; @wdef = $2.to_i
when "SDEF"; @sdef = $2.to_i
when "WACC"; @wacc = $2.to_i
when "SACC"; @sacc = $2.to_i
when "WEVA"; @weva = $2.to_i
when "SEVA"; @seva = $2.to_i
when "WCRI"; @wcri = $2.to_i
when "SCRI"; @scri = $2.to_i
when "WCDMG"; @wcdmg = $2.to_i
when "SCDMG"; @scdmg = $2.to_i
when "WPEN"; @wpen = $2.to_i
when "SPEN"; @spen = $2.to_i
when "HPWR"; @hpwr = $2.to_i
when "HITK"; @hitk = $2.to_i
when "APWR"; @apwr = $2.to_i
when "ADEF"; @adef = $2.to_i
when "EPWR"; @epwr = $2.to_i
when "SUB"; @sub = $2.to_i
end
#---
when YEM::REGEXP::BASEITEM::STAT_PER
case $1.upcase
when "STR"; @stat_per2 = $2.to_i
when "DEX"; @stat_per2 = $2.to_i
when "CON"; @stat_per2 = $2.to_i
when "INT"; @stat_per2 = $2.to_i
when "WIS"; @stat_per2 = $2.to_i
when "CHA"; @stat_per2 = $2.to_i
when "PIE"; @stat_per2 = $2.to_i
when "AAGI"; @stat_per2 = $2.to_i
when "WPWR"; @stat_per2 = $2.to_i
when "SPWR"; @stat_per2 = $2.to_i
when "WDEF"; @stat_per2 = $2.to_i
when "SDEF"; @stat_per2 = $2.to_i
when "WACC"; @stat_per2 = $2.to_i
when "SACC"; @stat_per2 = $2.to_i
when "WEVA"; @stat_per2 = $2.to_i
when "SEVA"; @stat_per2 = $2.to_i
when "WCRI"; @stat_per2 = $2.to_i
when "SCRI"; @stat_per2 = $2.to_i
when "WCDMG"; @stat_per2 = $2.to_i
when "SCDMG"; @stat_per2 = $2.to_i
when "WPEN"; @stat_per2 = $2.to_i
when "SPEN"; @stat_per2 = $2.to_i
when "HPWR"; @stat_per2 = $2.to_i
when "HITK"; @stat_per2 = $2.to_i
when "APWR"; @stat_per2 = $2.to_i
when "ADEF"; @stat_per2 = $2.to_i
when "EPWR"; @stat_per2 = $2.to_i
when "SUB"; @stat_per2 = $2.to_i
end
#---
end
} # end self.note.split
end # yem_cache_baseitem_eo
end # RPG::BaseItem
#===============================================================================
# Scene_Title
#===============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# alias method: load_bt_database
#--------------------------------------------------------------------------
alias load_bt_database_eo2 load_bt_database unless $@
def load_bt_database
load_bt_database_eo2
load_eo2_cache
end
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
alias load_database_eo2 load_database unless $@
def load_database
load_database_eo2
load_eo2_cache
end
#--------------------------------------------------------------------------
# new method: load_eo2_cache
#--------------------------------------------------------------------------
def load_eo2_cache
groups =
for group in groups
for obj in group
next if obj == nil
obj.yem_cache_baseitem_eo2 if obj.is_a?(RPG::BaseItem)
#~ obj.yem_cache_weapon_eo2 if obj.is_a?(RPG::Weapon)
#~ obj.yem_cache_armour_eo2 if obj.is_a?(RPG::Armor)
end
end
end
end # Scene_Title
#===============================================================================
# Game_Actor
#===============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# alias method: setup
#--------------------------------------------------------------------------
alias setup_eo2 setup unless $@
def setup(actor_id)
setup_eo2(actor_id)
end
#--------------------------------------------------------------------------
# overwrite method: base_maxhp
#--------------------------------------------------------------------------
def base_maxhp
n = eval(YEM::EQUIP::BASE_STAT)
percent = 100
for item in equips.compact
percent += aptitude(item.stat_per, :hp)
end
n *= percent / 100.0
for item in equips.compact
n += aptitude(item.maxhp, :hp)
end
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_maxmp
#--------------------------------------------------------------------------
def base_maxmp
n = eval(YEM::EQUIP::BASE_STAT)
percent = 100
for item in equips.compact
percent += aptitude(item.stat_per, :mp)
end
n *= percent / 100.0
for item in equips.compact
n += aptitude(item.maxmp, :mp)
end
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_atk
#--------------------------------------------------------------------------
def base_atk
# Not used!
n = 0
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_def
#--------------------------------------------------------------------------
def base_def
# Not used!
n = 0
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_spi
#--------------------------------------------------------------------------
def base_spi
# Not used!
n = 0
return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: base_agi
#--------------------------------------------------------------------------
def base_agi
# Hello, my name is Speed/SPD. "Real" AGI is .aagi
n = (aagi - 5) * 2
for item in equips.compact
n += item.agi
end
percent = 100
for item in equips.compact
percent += item.stat_per
end
n *= percent / 100.0
return Integer(n)
end
def str
# Strength/STR
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 21 # Vi
when 3; n = 10 # Catalina
when 4; n = 26 # Bertram
when 5; n = 12 # Taryn
when 6; n = 22 # Dio
when 7; n = 28 # Roberto
when 8; n = 18 # Laufey
when 9; n = 22 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.str
end
return Integer(n)
end
def dex
# Dexterity/DEX
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 22 # Vi
when 3; n = 20 # Catalina
when 4; n = 23 # Bertram
when 5; n = 20 # Taryn
when 6; n = 15 # Dio
when 7; n = 23 # Roberto
when 8; n = 28 # Laufey
when 9; n = 24 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.dex
end
return Integer(n)
end
def con
# Constitution/CON
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 13 # Vi
when 3; n = 13 # Catalina
when 4; n = 29 # Bertram
when 5; n = 19 # Taryn
when 6; n = 23 # Dio
when 7; n = 17 # Roberto
when 8; n = 24 # Laufey
when 9; n = 26 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.con
end
return Integer(n)
end
def int
# Intelligence/INT
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 21 # Vi
when 3; n = 28 # Catalina
when 4; n = 13 # Bertram
when 5; n = 25 # Taryn
when 6; n = 14 # Dio
when 7; n = 11 # Roberto
when 8; n = 23 # Laufey
when 9; n = 10 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.int
end
return Integer(n)
end
def wis
# Wisdom/WIS
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 13 # Vi
when 3; n = 26 # Catalina
when 4; n = 18 # Bertram
when 5; n = 20 # Taryn
when 6; n = 22 # Dio
when 7; n = 13 # Roberto
when 8; n = 12 # Laufey
when 9; n = 26 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.wis
end
return Integer(n)
end
def cha
# Charisma/CHA
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 15 # Vi
when 3; n = 24 # Catalina
when 4; n = 10 # Bertram
when 5; n = 28 # Taryn
when 6; n = 16 # Dio
when 7; n = 23 # Roberto
when 8; n = 22 # Laufey
when 9; n = 10 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.cha
end
return Integer(n)
end
def pie
# Piety/PIE
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 24 # Vi
when 3; n = 13 # Catalina
when 4; n = 20 # Bertram
when 5; n = 12 # Taryn
when 6; n = 27 # Dio
when 7; n = 19 # Roberto
when 8; n = 13 # Laufey
when 9; n = 19 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.pie
end
return Integer(n)
end
def aagi
# Agility/AGI
n = 20
case id
when 1; n = 22 # Fargo
when 2; n = 27 # Vi
when 3; n = 22 # Catalina
when 4; n = 17 # Bertram
when 5; n = 20 # Taryn
when 6; n = 18 # Dio
when 7; n = 22 # Roberto
when 8; n = 25 # Laufey
when 9; n = 19 # Garda
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
for item in equips.compact
n += item.aagi
end
return Integer(n)
end
def wpwr
# Weapon Power/W-PWR
n = 0
for item in equips.compact
n += item.wpwr
end
mod = str * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def spwr
# Spell Power/S-PWR
n = 0
for item in equips.compact
n += item.spwr
end
mod = int * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wdef
# Weapon Defense/W-DEF
n = 0
for item in equips.compact
n += item.wdef
end
mod = con * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def sdef
# Spell Defense/S-DEF
n = 0
for item in equips.compact
n += item.sdef
end
mod = wis * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wacc
# Weapon Accuracy/W-ACC
n = 100
for item in equips.compact
n += item.wacc
end
mod = (dex + 10) * 3.34
n *= mod / 100.00
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def sacc
# Spell Accuracy/S-ACC
n = 100
for item in equips.compact
n += item.sacc
end
mod = (dex + 10) * 3.34
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def weva
# Weapon Evasion/W-EVA
n = 5
for item in equips.compact
n += item.weva
end
mod = aagi * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def seva
# Spell Evasion/S-EVA
n = 5
for item in equips.compact
n += item.seva
end
mod = aagi * 5
n *= mod / 100.0
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wcri
# Weapon Critical/W-CRI
n = 3
n += ((dex - 12) / 5) ^ 2.8
n = 1 if n < 1
for item in equips.compact
n += item.wcri
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def scri
# Spell Critical/S-CRI
n = 3
n += ((dex - 12) / 5) ^ 2.8
n = 1 if n < 1
for item in equips.compact
n += item.scri
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wcdmg
# Weapon Critical Damage/W-CDMG
n = 5
n += str * (1.00 + level / 4)
for item in equips.compact
n += item.wcdmg
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def scdmg
# Spell Critical Damage/S-CDMG
n = 5
n += int * (1.00 + level / 3)
for item in equips.compact
n += item.scdmg
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def wpen
# Weapon Penetration/W-PEN
n = 0
for item in equips.compact
n += item.wpen
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def spen
# Spell Penetration/S-PEN
n = 0
for item in equips.compact
n += item.spen
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def hpwr
# Heal Power/H-PWR
n = pie
n += level * 4 * (pie - 5) / 15
for item in equips.compact
n += item.hpwr
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def hitk
# Heal Intake/H-ITK
n = con
n += level * 4 * con / 20
for item in equips.compact
n += item.hitk
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def apwr
# Ailment Power/A-PWR
n = cha
n += level * (cha / 5)
for item in equips.compact
n += item.apwr
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def adef
# Ailment Defense/A-DEF
n = wis
n += level * (wis / 5)
for item in equips.compact
n += item.adef
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def epwr
# Enchant Power/E-PWR
n = pie
n += level * (pie / 5)
for item in equips.compact
n += item.epwr
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
def sub
# Subtlety/SUB
n = (cha - 5) * 2
for item in equips.compact
n += item.sub
end
percent = 100
for item in equips.compact
percent += item.stat_per2
end
n *= percent / 100.0
return Integer(n)
end
#--------------------------------------------------------------------------
# UNUSED REMNANTS (but not the last one)
#--------------------------------------------------------------------------
def hit
# Not used!
n = 0; return Integer(n)
end
def eva
# Not used!
n = 0; return Integer(n)
end
def cri
# Not used!
n = 0; return Integer(n)
end
#--------------------------------------------------------------------------
# overwrite method: odds
#--------------------------------------------------------------------------
def odds
n = 50 - sub
n = 1 if n < 1
return Integer(n)
end
end # Game_Actor
#===============================================================================
# Window_EquipStat
#===============================================================================
class Window_EquipStat < Window_Base
#--------------------------------------------------------------------------
# draw_actor_stats
#--------------------------------------------------------------------------
def draw_actor_stats
dx = 0; dy = 0
arrow = YEM::EQUIP::VOCAB
for stat in YEM::EQUIP::SHOWN_STATS
icon = Icon.stat(@actor, stat)
case stat
when :maxhp
text = "Health"
value2 = @actor.maxhp
value1 = @clone.maxhp
when :maxmp
text = "Energy"
value2 = @actor.maxmp
value1 = @clone.maxmp
when :str
text = "Strength"
value2 = @actor.str
value1 = @clone.str
when :dex
text = "Dexterity"
value2 = @actor.dex
value1 = @clone.dex
when :con
text = "Constitution"
value2 = @actor.con
value1 = @clone.con
when :int
text = "Intelligence"
value2 = @actor.int
value1 = @clone.int
when :wis
text = "Wisdom"
value2 = @actor.wis
value1 = @clone.wis
when :cha
text = "Charisma"
value2 = @actor.cha
value1 = @clone.cha
when :pie
text = "Piety"
value2 = @actor.pie
value1 = @clone.pie
when :aagi
text = "Agility"
value2 = @actor.aagi
value1 = @clone.aagi
when :wpwr
text = "Wpn Power"
value2 = @actor.wpwr
value1 = @clone.wpwr
when :spwr
text = "Spl Power"
value2 = @actor.spwr
value1 = @clone.spwr
when :wdef
text = "Wpn Defense"
value2 = @actor.wdef
value1 = @clone.wdef
when :sdef
text = "Spl Defense"
value2 = @actor.sdef
value1 = @clone.sdef
when :wacc
text = "Wpn Accuracy"
value2 = @actor.wacc
value1 = @clone.wacc
when :sacc
text = "Spl Accuracy"
value2 = @actor.sacc
value1 = @clone.sacc
when :weva
text = "Wpn Evasion"
value2 = @actor.weva
value1 = @clone.weva
when :seva
text = "Spl Evasion"
value2 = @actor.seva
value1 = @clone.seva
when :wcri
text = "Wpn Critical"
value2 = @actor.wcri
value1 = @clone.wcri
when :scri
text = "Spl Critical"
value2 = @actor.scri
value1 = @clone.scri
when :wpen
text = "Wpn Penetration"
value2 = @actor.wpen
value1 = @clone.wpen
when :spen
text = "Spl Penetation"
value2 = @actor.spen
value1 = @clone.spen
when :wcdmg
text = "Wpn Crit Dmg"
value2 = @actor.wcdmg
value1 = @clone.wcdmg
when :scdmg
text = "Spl Crit Dmg"
value2 = @actor.scdmg
value1 = @clone.scdmg
when :hpwr
text = "Heal Power"
value2 = @actor.hpwr
value1 = @clone.hpwr
when :hitk
text = "Heal Intake"
value2 = @actor.hitk
value1 = @clone.hitk
when :apwr
text = "Ailment Power"
value2 = @actor.apwr
value1 = @clone.apwr
when :adef
text = "Ailment Defense"
value2 = @actor.adef
value1 = @clone.adef
when :epwr
text = "Enchant Power"
value2 = @actor.epwr
value1 = @clone.epwr
when :sub
text = "Subtlety"
value2 = @actor.sub
value1 = @clone.sub
when :agi # Speed
text = "Speed"
value2 = @actor.agi
value1 = @clone.agi
else; next
end
next if value1 == value2
draw_icon(icon, dx, dy); dx += 24
self.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE
self.contents.font.color = system_color
self.contents.draw_text(dx, dy, 60, WLH, text, 0); dx += 60
self.contents.font.color = normal_color
self.contents.draw_text(dx, dy, 45, WLH, value2, 2); dx += 45
self.contents.font.color = system_color
self.contents.font.size = Font.default_size
self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30
if @equip_index == nil or (@equip != nil and !@actor.equippable?(@equip))
self.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE
self.contents.font.color = normal_color
self.contents.draw_text(dx, dy, 45, WLH, value2, 2)
end
dx = 0; dy += WLH
end
end
#--------------------------------------------------------------------------
# draw_clone_stats
#--------------------------------------------------------------------------
def draw_clone_stats
dx = 0; dy = 0
last_hp = @actor.hp
last_mp = @actor.mp
for stat in YEM::EQUIP::SHOWN_STATS
case stat
when :maxhp
value2 = @actor.maxhp
value1 = @clone.maxhp
when :maxmp
value2 = @actor.maxmp
value1 = @clone.maxmp
when :str
value2 = @actor.str
value1 = @clone.str
when :dex
value2 = @actor.dex
value1 = @clone.dex
when :con
value2 = @actor.con
value1 = @clone.con
when :int
value2 = @actor.int
value1 = @clone.int
when :wis
value2 = @actor.wis
value1 = @clone.wis
when :cha
value2 = @actor.cha
value1 = @clone.cha
when :pie
value2 = @actor.pie
value1 = @clone.pie
when :aagi
value2 = @actor.aagi
value1 = @clone.aagi
when :wpwr
value2 = @actor.wpwr
value1 = @clone.wpwr
when :spwr
value2 = @actor.spwr
value1 = @clone.spwr
when :wdef
value2 = @actor.wdef
value1 = @clone.wdef
when :sdef
value2 = @actor.sdef
value1 = @clone.sdef
when :wacc
value2 = @actor.wacc
value1 = @clone.wacc
when :sacc
value2 = @actor.sacc
value1 = @clone.sacc
when :weva
value2 = @actor.weva
value1 = @clone.weva
when :seva
value2 = @actor.seva
value1 = @clone.seva
when :wcri
value2 = @actor.wcri
value1 = @clone.wcri
when :scri
value2 = @actor.scri
value1 = @clone.scri
when :wpen
value2 = @actor.wpen
value1 = @clone.wpen
when :spen
value2 = @actor.spen
value1 = @clone.spen
when :wcdmg
value2 = @actor.wcdmg
value1 = @clone.wcdmg
when :scdmg
value2 = @actor.scdmg
value1 = @clone.scdmg
when :hpwr
value2 = @actor.hpwr
value1 = @clone.hpwr
when :hitk
value2 = @actor.hitk
value1 = @clone.hitk
when :apwr
value2 = @actor.apwr
value1 = @clone.apwr
when :adef
value2 = @actor.adef
value1 = @clone.adef
when :epwr
value2 = @actor.epwr
value1 = @clone.epwr
when :sub
value2 = @actor.sub
value1 = @clone.sub
when :agi # Speed
value2 = @actor.agi
value1 = @clone.agi
else; next
end
if value1 > value2
self.contents.font.color = power_up_color
elsif value1 < value2
self.contents.font.color = power_down_color
else
next# self.contents.font.color = normal_color
end
self.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE
self.contents.draw_text(dx+159, dy, 45, WLH, value1, 2)
dx = 0; dy += WLH
end
@actor.hp = last_hp
@actor.mp = last_mp
end
end # Window_EquipStat
#===============================================================================
#
# END OF FILE
#
#===============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# new method: make_damage_values
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# In this section, you can adjust the damage formulas for the pre-existing
# weapons, skills, and items or you can make your own. To make a weapon,
# skill, or item call a different damage formula from the default, use the
# following tag in their notebox:
#
# <damage: phrase>
#
# Replace phrase with one of the values scene below. If you wish for the
# damage formula to continue multiple parts, just add more of the tag above
# and the game will calculate the damage formulas in that order.
#--------------------------------------------------------------------------
def make_damage_values(user, obj = nil)
attacker = caster = user; defender = target = self
variance = (obj == nil) ? 20 : obj.variance
dmg_hash = YEM::BATTLE_ENGINE::DAMAGE_HASH
formulas = (obj == nil) ? user.attack_formulas : obj.damage_formula
formulas +=
return if formulas.size <= 1
for formula in formulas
#---
hp_dmg = 0; mp_dmg = 0 # Reset Damage Values
healing_formula = false # Reset Healing Formula
ignore_elements = false # Reset Element Ignore
ignore_variance = false # Reset Variance Ignore
ignore_critical = false # Reset Critical Ignore
ignore_guarding = false # Reset Guard Ignore
ignore_inflates = false # Reset damage inflation
case formula
#----------------------------------------------------------------------
# <damage: phrase weapon>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This is the damage formula for regular attacks. Applied for weapons
# and enemy attacks. Replace "phrase" with the respect stat you wish
# for the normal attack to be based off of.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: spi weapon>
# <damage: agi weapon>
# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This is a default-used formula. Do not remove this.
#----------------------------------------------------------------------
when /(.*)(?:WEAPON|ATTACK)/i
atkstat = attacker.wpwr; defstat = defender.wdef; penstat = 100 - attacker.wpen
defstat = defstat * penstat / 100.0
hp_dmg = atkstat - defstat
hp_dmg = rand(2) + 1 if hp_dmg <= 0
calc_cri(attacker) if hp_dmg > 0
#----------------------------------------------------------------------
# <damage: normal>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# If you decide to use the normal skill/item formula, place this tag
# inside of the object's notebox. Note that this will not work for
# weapons and enemy attacks.
#
# Although the <damage: normal> tag has no alternatives, there are tags
# that can alter the effects of this formula. They are:
# <atk_f: x%>
# <def_f: x%>
# <spi_f: x%>
# <agi_f: x%>
# These values will base the damage formula around the specific stat
# to x%. For ATK_F and SPI_F, this allows you to break the editor limit
# of 200% and to be able to go higher. Using DEF_F and AGI_F, you can
# have skills determine their damage/healing based on the user's def
# and agi stats instead of limited to just atk and spi.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <atk_f: 500%>
# <def_f: 100%>
# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This is a default-used formula. Do not remove this.
#----------------------------------------------------------------------
when /(?:NORMAL|NORMAL SKILL|NORMAL ITEM)/
next if obj == nil
damage = obj.base_damage
next if damage == 0
if damage > 0
if obj.physical_attack
atkstat = attacker.wpwr; defstat = defender.wdef
penstat = 100 - attacker.wpen
defstat = .max
else
atkstat = attacker.spwr; defstat = defender.sdef
penstat = 100 - attacker.spen
end
defstat = defstat * penstat / 100.0
defstat = 0 if obj.ignore_defense
damage = atkstat - defstat
damage *= obj.base_damage / 100.0
elsif damage < 0
healing_formula = true
ignore_guarding = true
damage = attacker.hpwr + defender.hitk
damage *= obj.base_damage / -100.0
end
if obj.damage_to_mp
mp_dmg = damage
else
hp_dmg = damage
end
calc_cri(user, obj) if hp_dmg != 0 or mp_dmg != 0
#----------------------------------------------------------------------
# <damage: -x% current hp> <damage: +x% current hp>
# <damage: -x% current mp> <damage: +x% current mp>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will cause the target to lose x% of their current HP or MP. If
# a negative value is used for x, then the target will take damage of
# that percent. If the value is positive, the target will recover that
# percent instead. The damage is unaffected by variance, criticals, and
# elements and guarding.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: +50% current hp>
# <damage: -25% current mp>
#----------------------------------------------------------------------
when /(\d+)()CURRENT(.*)/i
percent = $1.to_i
case $3.to_s
when "HP"
hp_dmg = target.hp * percent / -100
when "MP", "SP"
mp_dmg = target.mp * percent / -100
end
healing_formula = true if percent > 0
ignore_elements = true
ignore_variance = true
ignore_critical = true
ignore_guarding = true
ignore_inflates = true
#----------------------------------------------------------------------
# <damage: -x% maxhp> <damage: +x% maxhp>
# <damage: -x% maxmp> <damage: +x% maxmp>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will cause the target to lose x% of their maximum HP or MP. If
# a negative value is used for x, then the target will take damage of
# that percent. If the value is positive, the target will recover that
# percent instead. The damage is unaffected by variance, criticals,
# elements and guarding.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: +50% maxhp>
# <damage: -25% maxmp>
#----------------------------------------------------------------------
when /(\d+)()MAX(.*)/i
percent = $1.to_i
case $3.to_s
when "HP"
hp_dmg = target.maxhp * percent / -100
when "MP", "SP"
mp_dmg = target.maxmp * percent / -100
end
healing_formula = true if percent > 0
ignore_elements = true
ignore_variance = true
ignore_critical = true
ignore_guarding = true
ignore_inflates = true
#----------------------------------------------------------------------
# <damage: hp shock>
# <damage: mp shock>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will deal damage based on the difference between the user's HP
# or MP and the target's HP or MP. If damage is dealt to HP, then the
# minimum damage possible is 1. If the damage is dealt to MP, there is
# minimum damage is 0. The damage is unaffected by variance, criticals,
# elements, and guarding.
#----------------------------------------------------------------------
when /(.*)SHOCK/i
percent = $1.to_i
case $1.to_s
when "HP"
hp_dmg = caster.hp - target.hp
hp_dmg = .max
when "MP", "SP"
mp_dmg = caster.mp - target.mp
hp_dmg = .max
end
ignore_elements = true
ignore_variance = true
ignore_critical = true
ignore_guarding = true
ignore_inflates = true
#----------------------------------------------------------------------
# <damage: x% rate>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This will inflate or deflate all the damage that's been done up to
# this point in the formula to x%. This tag does not deal damage on its
# own, but instead, augments the currently existing damage done. This
# affects both HP and MP damage totalled up to the current point.
# --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# <damage: 150% rate>
#----------------------------------------------------------------------
when /(\d+)()(?:RATE|INFLATE|DEFLATE)/i
percent = $1.to_i
@hp_damage = @hp_damage * percent / 100
@mp_damage = @mp_damage * percent / 100
next
#----------------------------------------------------------------------
# This section is dedicated to common damage adjusting. By default,
# nothing will be adjusted, but in the event you wish to adjust the
# damage, it can be done here as every attack, skill, and item will
# always run this case once and at the end of all the formulas.
#----------------------------------------------------------------------
when "COMMON DAMAGE ADJUST"
# Insert whatever common damage adjustments you want made here.
#----------------------------------------------------------------------
# Stop editting past this point.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Values created in the damage formula will be applied here to total
# HP and MP damage after undergoing variance and elemental adjustments.
#----------------------------------------------------------------------
else; next
end
#---
hp_dmg = apply_max_min(hp_dmg, healing_formula ? 2 : 1, obj)
#---
unless ignore_elements
hp_dmg = apply_element_rate(user, hp_dmg, obj)
mp_dmg = apply_element_rate(user, mp_dmg, obj)
end
@critical = false if $game_temp.force_critical == false
if (@critical and !ignore_critical) or $game_temp.force_critical
@critical = true
hp_dmg = apply_critical(hp_dmg, user, obj)
mp_dmg = apply_critical(mp_dmg, user, obj)
end
unless ignore_inflates
hp_dmg = apply_state_rates(hp_dmg, user, :hp)
mp_dmg = apply_state_rates(mp_dmg, user, :mp)
end
unless ignore_variance
hp_dmg = apply_variance(hp_dmg, variance)
mp_dmg = apply_variance(mp_dmg, variance)
end
unless ignore_guarding
hp_dmg = apply_guard(hp_dmg)
mp_dmg = apply_guard(mp_dmg)
end
#---
@hp_damage += Integer(hp_dmg)
@mp_damage += Integer(mp_dmg)
#---
end
end
#--------------------------------------------------------------------------
# new method: apply_critical
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# The following method below is a simplistic method that allows you to
# adjust the critical multiplier formula if desired.
#--------------------------------------------------------------------------
def apply_critical(damage, user, obj = nil)
modifier = user.wcdmg
if obj != nil
modifier = user.scdmg unless obj.physical_attack
modifier *= obj.base_damage / 100.0
end
damage += Integer(modifier)
return damage
end
#--------------------------------------------------------------------------
# overwrite method: calc_hit
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This method has been extracted from the default base scripts to allow for
# easier and quicker access to modifying hit rate calculations.
#--------------------------------------------------------------------------
def calc_hit(user, obj = nil)
if obj == nil # for a normal attack
physical = true
elsif obj.is_a?(RPG::Skill) # for a skill
physical = obj.physical_attack
else
return 100
end
if physical # for a physical attack
hit = user.wacc
hit -= self.weva
else
hit = user.sacc
hit -= self.seva
end
return hit
end
#--------------------------------------------------------------------------
# overwrite method: calc_eva
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This method has been extracted from the default base scripts to allow for
# easier and quicker access to modifying evasion calculations.
#--------------------------------------------------------------------------
def calc_eva(user, obj = nil)
return 0
end
#--------------------------------------------------------------------------
# new method: calc_cri
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# This method has been extracted from the default base scripts to allow for
# easier and quicker access to modifying critical calculations.
#--------------------------------------------------------------------------
def calc_cri(user, obj = nil)
return if @critical
value = 0
if obj == nil
physical = true
else
value += obj.cri_rate unless obj.cri_rate == nil
physical = obj.physical_attack
end
if physical
value += user.wcri
else
value += user.scri
end
@critical = (rand(100) < value)
end
end # Game_Battler
chaos: Yeah, yeah we do.
I am currently setting up enemy basic actions and listening to... KH2 music. The hell?
Philadelphia eschews normal attacks in favor of "basic actions" - skills that cost nothing to execute. This means that instead of mashing Boring Slash, you're constantly throwing fireballs, laying toxins down and doing crazy tiger dives. However, enemies are the exact same way!
Yes, Karsuman and I's project/revival is named after a famous city.