09-03-2024, 06:10 AM
KMonsterSacrifice VX
by Kyonides
Introduction
Have you ever dreamed on a mob or boss consuming its pals to recover some HP or SP alias MP? Now that's possible!
Actually you can also let your monsters steal their fellows' strength or intelligence!
VX Script
Code:
# * KMonsterSacrifice VX
# Scripter : Kyonides Arkanthes
# 2019-11-04
# This scriptlet allows you to configure monsters that can sacrifice its fellow
# monsters' life or mana points if it casts a special skill. Additionally they
# can steal some of their fellows' strength or intelligence.
# KMonster.mana_knockout = true OR false
# Magical Beings with no remaining SP will (not) fall in battle automatically
# if another monster drains all of their remaining SP.
module KMonster
SACRIFICE_FAILED = "FAILED"
LIFE_SACRIFICE_ID = 5
MANA_SACRIFICE_ID = 6
ATK_SACRIFICE_ID = 7
SPI_SACRIFICE_ID = 8
# Should it get killed if it has no more mana?
@mana_knockout = true # true OR false
# Options: :max or :rest or a percent (1 ~ 99 only)
LIFE_SACRIFICE = {
1 => :rest, 2 => 10, 3 => :max
}
MANA_SACRIFICE = {
1 => :rest, 2 => 7, 3 => :max
}
# For ATK and SPI :rest option is the same as :max
ATK_SACRIFICE = {}
SPI_SACRIFICE = {}
def self.mana_knockout() @mana_knockout end
def self.mana_knockout=(bool) @mana_knockout = bool end
end
class Game_Battler
attr_writer :hp_damage, :mp_damage
attr_accessor :atk_plus, :spi_plus
alias :kyon_monster_sacrifice_gm_battler_se :skill_effect
def skill_effect(user, skill)
killed = @hp == 0
result = kyon_monster_sacrifice_gm_battler_se(user, skill)
if result
if KMonster::LIFE_SACRIFICE_ID == skill.id
return life_sacrifice_calculation
elsif KMonster::MANA_SACRIFICE_ID == skill.id
return mana_sacrifice_calculation
elsif KMonster::ATK_SACRIFICE_ID == skill.id
return atk_sacrifice_calculation
elsif KMonster::SPI_SACRIFICE_ID == skill.id
return spi_sacrifice_calculation
end
end
result
end
def life_sacrifice_calculation
mobs = $game_troop.members - [self]
if mobs.size > 0
mob = mobs[rand(mobs.size)]
stype = KMonster::LIFE_SACRIFICE[mob.id]
case stype
when :max
self.hp += total = mob.maxhp
@hp_damage = -total
mob.hp_damage = total
mob.hp = 0
when :rest
self.hp += total = mob.hp
@hp_damage = -total
mob.hp_damage = total
mob.hp = 0
when 1..99
self.hp += total = mob.maxhp * stype / 100
@hp_damage = -total
mob.hp -= total
end
return true if stype
end
@hp_damage = KMonster::SACRIFICE_FAILED
false
end
def mana_sacrifice_calculation
mobs = $game_troop.members - [self]
if mobs.size > 0
mob = mobs[rand(mobs.size)]
stype = KMonster::MANA_SACRIFICE[mob.id]
case stype
when :max
self.mp += total = mob.maxmp
@mp_damage = -total
mob.mp_damage = total
mob.mp = 0
when :rest
self.mp += total = mob.mp
@mp_damage = -total
mob.mp_damage = total
mob.mp = 0
when 1..99
self.mp += total = mob.maxmp * stype / 100
@mp_damage = -total
mob.damage = total
mob.mp -= total
end
mob.hp = 0 if KMonster.mana_knockout and mob.mp == 0
return true if stype
end
@mp_damage = KMonster::SACRIFICE_FAILED
false
end
def atk_sacrifice_calculation
mobs = $game_troop.members - [self]
if mobs.size > 0
mob = mobs[rand(mobs.size)]
stype = KMonster::ATK_SACRIFICE[mob.id]
case stype
when :max. :rest
@atk_plus += total = mob.base_atk
@damage = -total
mob.damage = total
mob.atk_plus = -total
when 1..99
@atk_plus += total = (mob.base_atk - mob.atk_plus) * stype / 100
@damage = -total
mob.damage = total
mob.atk_plus -= total
end
return true if stype
end
@hp_damage = KMonster::SACRIFICE_FAILED
false
end
def spi_sacrifice_calculation
mobs = $game_troop.members - [self]
if mobs.size > 0
mob = mobs[rand(mobs.size)]
stype = KMonster::SPI_SACRIFICE[mob.id]
case stype
when :max. :rest
@spi_plus += total = mob.base_spi
@damage = -total
mob.damage = total
mob.spi_plus = -total
when 1..99
@spi_plus += total = (mob.base_spi - mob.spi_plus) * stype / 100
@damage = -total
mob.damage = total
mob.spi_plus -= total
end
return true if stype
end
@mp_damage = KMonster::SACRIFICE_FAILED
false
end
end
Terms & Conditions
You must include my nickname and the current website's URL in your game credits.
You are free to use it in non commercial games.
Give me a free copy of your completed game if you include at least 2 of my scripts!
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE