05-14-2016, 03:47 AM
I already tried that, but it has no effect.
I have to use a skill to update the bar.
These are the two scripts, if you are interested:
I have to use a skill to update the bar.
These are the two scripts, if you are interested:
Content Hidden
Code:
#==============================================================================
# HoT DoT
# Author: Shdwlink1993
# Version: 1.04
# Type: Poison Control
#
# Editted by KK20
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# HT Date 1.0b: 1/11/2009
# HT Date 1.01b: 1/12/2009
# HT Date 1.02: 2/19/2012
# HT Date 1.03: 3/20/2012
# HT Date 1.04: 4/08/2012
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# # This work is protected by the following license:
# #----------------------------------------------------------------------------
# #
# # Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# # ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# #
# # You are free:
# #
# # to Share - to copy, distribute and transmit the work
# # to Remix - to adapt the work
# #
# # Under the following conditions:
# #
# # Attribution. You must attribute the work in the manner specified by the
# # author or licensor (but not in any way that suggests that they endorse you
# # or your use of the work).
# #
# # Noncommercial. You may not use this work for commercial purposes.
# #
# # Share alike. If you alter, transform, or build upon this work, you may
# # distribute the resulting work only under the same or similar license to
# # this one.
# #
# # - For any reuse or distribution, you must make clear to others the license
# # terms of this work. The best way to do this is with a link to this web
# # page.
# #
# # - Any of the above conditions can be waived if you get permission from the
# # copyright holder.
# #
# # - Nothing in this license impairs or restricts the author's moral rights.
# #
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# ~= Function =~
#
# This script is designed to allow you to expand what poison does to your
# character. Poison now is able to affect HP or SP, and take off a fraction or
# a set amount of HP/SP.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [1/11/2009]
# Version 1.01b --------------------------------------------------- [1/12/2009]
# Version 1.02 ---------------------------------------------------- [2/19/2012]
# Version 1.03 ---------------------------------------------------- [3/20/2012]
# Version 1.04 ---------------------------------------------------- [4/08/2012]
#
# V 1.04 Changes:
# - DoT that heals will make the screen flash green instead of red
# - Damage values that were displayed in battle were inaccurate
# - Percentage based damage was written incorrectly
#
# V 1.03 Changes:
# - Percentage-based DoT healed when damage values were positive and visa-versa
# - Modified how variance was calculated (added explanation in config)
# - Organized script to be easier on the eyes and added comment lines
#
# V 1.02 Changes:
# - Negative damage values damaged instead of healed and visa-versa
# - Limit_Drain was bugged and has now been fixed
# - HP and SP damage was being calculated twice (thus actual damage/healing
# was twice the value the user configured)
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# ~= Customization =~
#
# Customization can be found right under where the Poison Database begins.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# ~= Compatability =~
#
# - Low probability of working with the SDK.
# - Will not work with other Poison-editing scripts.
# - Must be placed above Tons of Addons.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
module SL93
def self.hotdot(id)
case id
#------------------------------------------------------------------------
# Poison Database Begins
#------------------------------------------------------------------------
# when STATE_NUMBER then return [TYPE, DAMAGE, VARIANCE, LIMIT_DRAIN]
# * STATE_NUMBER is the state you want to be affected by this.
# * TYPE refers to the thing sustaining damage.
# 1 = HP, 2 = SP. If the type is positive, the amount is a literal
# number (eg. You lose about 50 HP). If the type is negative, then
# the amount is a fraction of the maximum (eg. You lose about 50% of
# your HP).
# * DAMAGE refers to how much damage is healed/taken.
# A Positive amount hurts you and a negative amount heals you.
# * VARIANCE refers to how much the damage varies. Positive only.
# This depends in part on if TYPE was positive or negative.
#
# Example A: TYPE is positive. VARIANCE is 15.
# Damage/Heal amount can do up to 15 more or 15 less.
#
# Example B: TYPE is negative. VARIANCE is 15.
# Damage/Heal amount can do up to 15% more or 15% less.
#
# * LIMIT_DRAIN refers to if the poison can leave you with 0 HP/SP.
# If true, then it is limited, and stops at 1. If false, then it
# isn't.
#------------------------------------------------------------------------
when 15 then return [-1, 2, 15, true] # Gift
when 16 then return [-1, 5, 15, false] # Blutung
when 17 then return [-1, 10, 15, false] # Brand
when 33 then return [-1, -5, 15, false]# Regeneration
when 34 then return [-2, -5, 0, false] # Magiekanalisierung
#------------------------------------------------------------------------
# Poison Database Ends
#------------------------------------------------------------------------
end
return false
end
end
class Game_Battler
def slip_damage?
return @states.any? {|i| SL93.hotdot(i) != false }
end
def slip_damage_effect
ids = []
sp_damage = 0
self.damage = 0
# Get the HoT/DoT states applied to the character
for i in @states
ids.push(i) if SL93.hotdot(i) != false
end
for i in ids
# If the state damages/heals by a literal number
if SL93.hotdot(i)[0] > 0
damage = SL93.hotdot(i)[1]
# If the state damages/heals HP by a percent
elsif SL93.hotdot(i)[0] == -1
damage = self.maxhp * SL93.hotdot(i)[1] / 100
# If the state damages/heals SP by a percent
elsif SL93.hotdot(i)[0] == -2
damage = self.maxsp * SL93.hotdot(i)[1] / 100
end
# If damage/heal amount is not zero and variance exists
if damage != 0 && SL93.hotdot(i)[2] > 0
# Variance based on literal numbers
amp = (damage.abs < SL93.hotdot(i)[2] ? damage.abs - 1 : SL93.hotdot(i)[2]) if SL93.hotdot(i)[0] > 0
# Variance based on percentages
amp = [damage.abs * SL93.hotdot(i)[2] / 100, 1].max if SL93.hotdot(i)[0] < 0
# Apply variance amounts to damage/heal amount
damage += rand(amp+1) + rand(amp+1) - amp
end
# If HP damage/heal
if SL93.hotdot(i)[0].abs == 1
hp = @hp
# If limit_drain and actual HP damage being done (not healing)
if SL93.hotdot(i)[3] and damage > 0
self.hp = [hp - damage,1].max # Leave 1 HP
else
self.hp -= damage
end
# Add total damage to variable
self.damage += damage
# If SP damage/heal
elsif SL93.hotdot(i)[0].abs == 2
sp = @sp
# If limit_drain and actual SP damage being done (not healing)
if SL93.hotdot(i)[3] and damage > 0
self.sp = [sp - damage,1].max # Leave 1 SP
else
self.sp -= damage
end
# Add total SP damage to variable
sp_damage += damage
end
end
# Modify @damage to be SP damage if no changes to HP were made
self.damage = sp_damage if self.damage == 0
end
end
class Game_Party
def check_map_slip_damage
@actors.each {|actor|
if actor.hp > 0 && actor.slip_damage?
actor.slip_damage_effect
if actor.damage <= 0
# Positive DoT makes green screen
$game_screen.start_flash(Color.new(0, 255, 0, 128), 4)
else
# Negative DoT makes red screen
$game_screen.start_flash(Color.new(255, 0, 0, 128), 4)
end
$game_temp.gameover = $game_party.all_dead?
end
}
end
end
Content Hidden
Code:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# MP Shield Status Effect by Xelias
# Version: 1.00
# Type: Game Experience Improvement
# Date: 26.9.2006
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# When under this status, you never lose HP. However, you lose SP instead. When
# your SP reach 0, this status becomes ineffective.
#
# Configuration:
#
# MP_SHIELD_IDS - the IDs of the MP Shield status effects
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
MP_SHIELD_IDS = [14]
MP_SHIELD_ANIMATION_ID = 210
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
alias attack_effect_mpshield_later attack_effect
def attack_effect(attacker)
last_hp = self.hp
last_sr = (($crls && self.is_a?(Game_Actor)) ? self.sr : nil)
result = attack_effect_mpshield_later(attacker)
mpshield_effect(last_hp, last_sr, attacker) if self.damage.is_a?(Numeric)
return result
end
alias skill_effect_mpshield_later skill_effect
def skill_effect(user, skill)
last_hp = self.hp
last_sr = (($crls && self.is_a?(Game_Actor)) ? self.sr : nil)
result = skill_effect_mpshield_later(user, skill)
mpshield_effect(last_hp, last_sr, skill) if self.damage.is_a?(Numeric)
return result
end
alias item_effect_mpshield_later item_effect
def item_effect(item, battler = nil)
last_hp = self.hp
last_sr = (($crls && self.is_a?(Game_Actor)) ? self.sr : nil)
if battler == nil
result = item_effect_mpshield_later(item)
else
result = item_effect_mpshield_later(item, battler)
end
mpshield_effect(last_hp, last_sr, item) if self.damage.is_a?(Numeric)
return result
end
def mpshield_effect(last_hp, last_sr, object)
if $game_system.MP_SHIELD_STATUS && MP_SHIELD_IDS.any? {|i| @states.include?(i)}
self.hp = last_hp
self.hp = self.hp
self.sr = last_sr if last_sr != nil
if self.sp > 0 && self.damage > 0
self.animation_id = MP_SHIELD_ANIMATION_ID
self.sp -= self.damage
else
self.hp -= self.damage
end
end
end
end