STORMCROW'S PROFILE

>look StormCrow

You see not a bird but an American lady who likes other ladies. Oscillates between shy as a mouse and babbling violently, seemingly at random.

I like badasses. I like babes. I like badass babes the best. Okay...actually I like doggoes the very best, but I aspire to make games about badass babes is my point.

I use music from bands and artists in the free games I make: the frustrated filmmaker in me is very enamored of scoring scenes with rock'n'roll soundtracks Scorcese or Tarantino style. In addition to being a time honored tradition in cinema, this has a history in AAA videoogames as well (for a really great use of it, see Bioshock: Infinite). If I was a millionaire, I'd totally license these songs so I could actually use them legally.
Live Free Or Die
"The Tree of Liberty must be refreshed from time to time with the blood of patriots and tyrants."

Search

Filter

[RMVX ACE] Yanfly Engine Ace - Visual Battlers - Minor Tweak

I think a lot of us are familiar with this pretty simple script. It's been out for quite a while.

#==============================================================================

#
# ¥ Yanfly Engine Ace - Visual Battlers v1.01
# -- Last Updated: 2012.07.24
# -- Level: Easy
# -- Requires: n/a
#
# ¥ Modified by:
# -- Yami
# -- Kread-Ex
# -- Archeia_Nessiah
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-VisualBattlers"] = true

#==============================================================================
# ¥ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.12.18 - Added preset views and able to change direction in-game.
# 2012.07.24 - Finished Script.
# 2012.01.05 - Started Script.
#
#==============================================================================
# ¥ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script provides a visual for all actors by default charsets. The actions
# and movements are alike Final Fantasy 1, only move forward and backward when
# start and finish actions.
#
#==============================================================================
# ¥ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To change the player direction in-game, use the snippet below in a script
# call:
#
# $game_system.party_direction = n
#
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ¥ Materials but above ¥ Main. Remember to save.
#
#==============================================================================
# ¥ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================

module YEA
module VISUAL_BATTLERS

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Party Location Setting -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings are adjusted for Party Location. Each Actor will have
# coordinates calculated by below formula. There are two samples coordinates
# below, change PARTY_DIRECTION to the base index you want to use.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PARTY_DIRECTION = 6 # This direction is opposite from actual direction.

PARTY_LOCATION_BASE_COORDINATES ={
# Index => [base_x, base_y, mod_x, mod_y],
2 => [ 250, 290, 40, 0], #UP
4 => [ 150, 280, 20, -20], #LEFT
3 => [ 460, 280, 30, -10], #RIGHT
6 => [ 460, 230, 20, 20], #DEFAULT RIGHT
8 => [ 260, 230, 40, 0], #DOWN
} # Do not remove this.

PARTY_LOCATION_FORMULA_X = "base_x + index * mod_x"
PARTY_LOCATION_FORMULA_Y = "base_y + index * mod_y"

end # VISUAL_BATTLERS
end # YEA

#==============================================================================
# ¥ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

#==============================================================================
# ? ¥ Direction
#==============================================================================

module Direction

#--------------------------------------------------------------------------
# self.correct
#--------------------------------------------------------------------------
def self.correct(direction)
case direction
when 1; return 4
when 3; return 6
when 7; return 4
when 9; return 6
else; return direction
end
end

#--------------------------------------------------------------------------
# self.opposite
#--------------------------------------------------------------------------
def self.opposite(direction)
case direction
when 1; return 6
when 2; return 8
when 3; return 4
when 4; return 6
when 6; return 4
when 7; return 6
when 8; return 2
when 9; return 4
else; return direction
end
end

end # Direction

#==============================================================================
# ? ¥ Game_System
#==============================================================================

class Game_System; attr_accessor :party_direction; end

#==============================================================================
# ? ¥ Game_BattleCharacter
#==============================================================================

class Game_BattleCharacter < Game_Character

#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(actor)
super()
setup_actor(actor)
@move_x_rate = 0
@move_y_rate = 0
end

#--------------------------------------------------------------------------
# setup_actor
#--------------------------------------------------------------------------
def setup_actor(actor)
@actor = actor
@step_anime = true
set_graphic(@actor.character_name, @actor.character_index)
setup_coordinates
dr = $game_system.party_direction || YEA::VISUAL_BATTLERS::PARTY_DIRECTION
direction = Direction.opposite(dr)
set_direction(Direction.correct(direction))
end

#--------------------------------------------------------------------------
# sprite=
#--------------------------------------------------------------------------
def sprite=(sprite)
@sprite = sprite
end

#--------------------------------------------------------------------------
# setup_coordinates
#--------------------------------------------------------------------------
def setup_coordinates
location = ($game_system.party_direction ||
YEA::VISUAL_BATTLERS::PARTY_DIRECTION)
base_x = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][0]
base_y = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][1]
mod_x = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][2]
mod_y = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][3]
@actor.screen_x = eval(YEA::VISUAL_BATTLERS::PARTY_LOCATION_FORMULA_X)
@actor.screen_y = eval(YEA::VISUAL_BATTLERS::PARTY_LOCATION_FORMULA_Y)
@actor.origin_x = @actor.screen_x
@actor.origin_y = @actor.screen_y
@actor.create_move_to(screen_x, screen_y, 1)
end

#--------------------------------------------------------------------------
# index
#--------------------------------------------------------------------------
def index
return @actor.index
end

#--------------------------------------------------------------------------
# screen_x
#--------------------------------------------------------------------------
def screen_x
return @actor.screen_x
end

#--------------------------------------------------------------------------
# screen_y
#--------------------------------------------------------------------------
def screen_y
return @actor.screen_y
end

#--------------------------------------------------------------------------
# screen_z
#--------------------------------------------------------------------------
def screen_z
return @actor.screen_z
end

end # Game_BattleCharacter

#==============================================================================
# ? ¥ Game_Battler
#==============================================================================

class Game_Battler < Game_BattlerBase

#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :moved_back
attr_accessor :origin_x
attr_accessor :origin_y
attr_accessor :screen_x
attr_accessor :screen_y
attr_accessor :started_turn

#--------------------------------------------------------------------------
# alias method: execute_damage
#--------------------------------------------------------------------------
alias game_battler_execute_damage_vb execute_damage
def execute_damage(user)
game_battler_execute_damage_vb(user)
if @result.hp_damage > 0
move_backward(24, 6) unless @moved_back
@moved_back = true
end
end

#--------------------------------------------------------------------------
# face_opposing_party
#--------------------------------------------------------------------------
def face_opposing_party
direction = ($game_system.party_direction ||
YEA::VISUAL_BATTLERS::PARTY_DIRECTION)
character.set_direction(Direction.correct(direction)) rescue 0
end

#--------------------------------------------------------------------------
# new method: face_coordinate
#--------------------------------------------------------------------------
def face_coordinate(destination_x, destination_y)
x1 = Integer(@screen_x)
x2 = Integer(destination_x)
y1 = Graphics.height - Integer(@screen_y)
y2 = Graphics.height - Integer(destination_y)
return if x1 == x2 and y1 == y2
#---
angle = Integer(Math.atan2((y2-y1),(x2-x1)) * 1800 / Math::PI)
if (0..225) === angle or (-225..0) === angle
direction = 6
elsif (226..675) === angle
direction = 9
elsif (676..1125) === angle
direction = 8
elsif (1126..1575) === angle
direction = 7
elsif (1576..1800) === angle or (-1800..-1576) === angle
direction = 4
elsif (-1575..-1126) === angle
direction = 1
elsif (-1125..-676) === angle
direction = 2
elsif (-675..-226) === angle
direction = 3
end
#---
character.set_direction(Direction.correct(direction)) rescue 0
end

#--------------------------------------------------------------------------
# create_move_to
#--------------------------------------------------------------------------
def create_move_to(destination_x, destination_y, frames = 12)
@destination_x = destination_x
@destination_y = destination_y
frames = [frames, 1].max
@move_x_rate = [(@screen_x - @destination_x).abs / frames, 2].max
@move_y_rate = [(@screen_y - @destination_y).abs / frames, 2].max
end

#--------------------------------------------------------------------------
# update_move_to
#--------------------------------------------------------------------------
def update_move_to
@move_x_rate = 0 if @screen_x == @destination_x || @move_x_rate.nil?
@move_y_rate = 0 if @screen_y == @destination_y || @move_y_rate.nil?
value = [(@screen_x - @destination_x).abs, @move_x_rate].min
@screen_x += (@destination_x > @screen_x) ? value : -value
value = [(@screen_y - @destination_y).abs, @move_y_rate].min
@screen_y += (@destination_y > @screen_y) ? value : -value
end

#--------------------------------------------------------------------------
# move_forward
#--------------------------------------------------------------------------
def move_forward(distance = 24, frames = 12)
direction = forward_direction
move_direction(direction, distance, frames)
end

#--------------------------------------------------------------------------
# move_backward
#--------------------------------------------------------------------------
def move_backward(distance = 24, frames = 12)
direction = Direction.opposite(forward_direction)
move_direction(direction, distance, frames)
end

#--------------------------------------------------------------------------
# move_direction
#--------------------------------------------------------------------------
def move_direction(direction, distance = 24, frames = 12)
case direction
when 1; move_x = distance / -2; move_y = distance / 2
when 2; move_x = distance * 0; move_y = distance * 1
when 3; move_x = distance / -2; move_y = distance / 2
when 4; move_x = distance * -1; move_y = distance * 0
when 6; move_x = distance * 1; move_y = distance * 0
when 7; move_x = distance / -2; move_y = distance / -2
when 8; move_x = distance * 0; move_y = distance * -1
when 9; move_x = distance / 2; move_y = distance / -2
else; return
end
destination_x = @screen_x + move_x
destination_y = @screen_y + move_y
create_move_to(destination_x, destination_y, frames)
end

#--------------------------------------------------------------------------
# forward_direction
#--------------------------------------------------------------------------
def forward_direction
return ($game_system.party_direction ||
YEA::VISUAL_BATTLERS::PARTY_DIRECTION)
end

#--------------------------------------------------------------------------
# move_origin
#--------------------------------------------------------------------------
def move_origin
create_move_to(@origin_x, @origin_y)
face_coordinate(@origin_x, @origin_y)
@moved_back = false
end

#--------------------------------------------------------------------------
# moving?
#--------------------------------------------------------------------------
def moving?
return false if dead? || !exist?
return @move_x_rate != 0 || @move_y_rate != 0
end

end # Game_Battler

#==============================================================================
# ? ¥ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler

#--------------------------------------------------------------------------
# overwrite method: use_sprite?
#--------------------------------------------------------------------------
def use_sprite?
return true
end

#--------------------------------------------------------------------------
# new method: screen_x
#--------------------------------------------------------------------------
def screen_x
return @screen_x rescue 0
end

#--------------------------------------------------------------------------
# new method: screen_y
#--------------------------------------------------------------------------
def screen_y
return @screen_y rescue 0
end

#--------------------------------------------------------------------------
# new method: screen_z
#--------------------------------------------------------------------------
def screen_z
return 100
end

#--------------------------------------------------------------------------
# new method: sprite
#--------------------------------------------------------------------------
def sprite
index = $game_party.battle_members.index(self)
return SceneManager.scene.spriteset.actor_sprites[index]
end

#--------------------------------------------------------------------------
# new method: character
#--------------------------------------------------------------------------
def character
return sprite.character_base
end

#--------------------------------------------------------------------------
# face_opposing_party
#--------------------------------------------------------------------------
def face_opposing_party
dr = $game_system.party_direction || YEA::VISUAL_BATTLERS::PARTY_DIRECTION
direction = Direction.opposite(dr)
character.set_direction(Direction.correct(direction)) rescue 0
end

#--------------------------------------------------------------------------
# forward_direction
#--------------------------------------------------------------------------
def forward_direction
return Direction.opposite(($game_system.party_direction ||
YEA::VISUAL_BATTLERS::PARTY_DIRECTION))
end

end # Game_Actor

#==============================================================================
# ? ¥ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler

#--------------------------------------------------------------------------
# new method: sprite
#--------------------------------------------------------------------------
def sprite
return SceneManager.scene.spriteset.enemy_sprites.reverse[self.index]
end

#--------------------------------------------------------------------------
# new method: character
#--------------------------------------------------------------------------
def character
return sprite
end

end # Game_Enemy

#==============================================================================
# ? ¥ Game_Troop
#==============================================================================

class Game_Troop < Game_Unit

#--------------------------------------------------------------------------
# alias method: setup
#--------------------------------------------------------------------------
alias game_troop_setup_vb setup
def setup(troop_id)
game_troop_setup_vb(troop_id)
set_coordinates
end

#--------------------------------------------------------------------------
# new method: set_coordinates
#--------------------------------------------------------------------------
def set_coordinates
for member in members
member.origin_x = member.screen_x
member.origin_y = member.screen_y
member.create_move_to(member.screen_x, member.screen_y, 1)
end
end

end # Game_Troop

#==============================================================================
# ? ¥ Sprite_Battler
#==============================================================================

class Sprite_Battler < Sprite_Base

#--------------------------------------------------------------------------
# public instance_variable
#--------------------------------------------------------------------------
attr_accessor :character_base
attr_accessor :character_sprite

#--------------------------------------------------------------------------
# alias method: dispose
#--------------------------------------------------------------------------
alias sprite_battler_dispose_vb dispose
def dispose
dispose_character_sprite
sprite_battler_dispose_vb
end

#--------------------------------------------------------------------------
# new method: dispose_character_sprite
#--------------------------------------------------------------------------
def dispose_character_sprite
@character_sprite.dispose unless @character_sprite.nil?
end

#--------------------------------------------------------------------------
# alias method: update
#--------------------------------------------------------------------------
alias sprite_battler_update_vb update
def update
sprite_battler_update_vb
return if @battler.nil?
update_move_to
update_character_base
update_character_sprite
end

#--------------------------------------------------------------------------
# new method: update_character_base
#--------------------------------------------------------------------------
def update_character_base
return if @character_base.nil?
@character_base.update
end

#--------------------------------------------------------------------------
# new method: update_character_sprite
#--------------------------------------------------------------------------
def update_character_sprite
return if @character_sprite.nil?
@character_sprite.update
end

#--------------------------------------------------------------------------
# new method: update_move_to
#--------------------------------------------------------------------------
def update_move_to
@battler.update_move_to
end

#--------------------------------------------------------------------------
# new method: moving?
#--------------------------------------------------------------------------
def moving?
return false if @battler.nil?
return @battler.moving?
end

end # Sprite_Battler

#==============================================================================
# ? ¥ Sprite_BattleCharacter
#==============================================================================

class Sprite_BattleCharacter < Sprite_Character

#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(viewport, character = nil)
super(viewport, character)
character.sprite = self
end

end # Sprite_BattleCharacter

#==============================================================================
# ? ¥ Spriteset_Battle
#==============================================================================

class Spriteset_Battle

#--------------------------------------------------------------------------
# public instance_variable
#--------------------------------------------------------------------------
attr_accessor :actor_sprites
attr_accessor :enemy_sprites

#--------------------------------------------------------------------------
# overwrite method: create_actors
#--------------------------------------------------------------------------
def create_actors
total = $game_party.max_battle_members
@current_party = $game_party.battle_members.clone
@actor_sprites = Array.new(total) { Sprite_Battler.new(@viewport1) }
for actor in $game_party.battle_members
@actor_sprites[actor.index].battler = actor
create_actor_sprite(actor)
end
end

#--------------------------------------------------------------------------
# new method: create_actor_sprite
#--------------------------------------------------------------------------
def create_actor_sprite(actor)
character = Game_BattleCharacter.new(actor)
character_sprite = Sprite_BattleCharacter.new(@viewport1, character)
@actor_sprites[actor.index].character_base = character
@actor_sprites[actor.index].character_sprite = character_sprite
actor.face_opposing_party
end

#--------------------------------------------------------------------------
# alias method: update_actors
#--------------------------------------------------------------------------
alias spriteset_battle_update_actors_vb update_actors
def update_actors
if @current_party != $game_party.battle_members
dispose_actors
create_actors
end
spriteset_battle_update_actors_vb
end

#--------------------------------------------------------------------------
# new method: moving?
#--------------------------------------------------------------------------
def moving?
return battler_sprites.any? {|sprite| sprite.moving? }
end

end # Spriteset_Battle

#==============================================================================
# ? ¥ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base

#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :spriteset

#--------------------------------------------------------------------------
# alias method: process_action_end
#--------------------------------------------------------------------------
alias scene_battle_process_action_end_vb process_action_end
def process_action_end
start_battler_move_origin
scene_battle_process_action_end_vb
end

#--------------------------------------------------------------------------
# alias method: execute_action
#--------------------------------------------------------------------------
alias scene_battle_execute_action_vb execute_action
def execute_action
start_battler_move_forward
scene_battle_execute_action_vb
end

#--------------------------------------------------------------------------
# new method: start_battler_move_forward
#--------------------------------------------------------------------------
def start_battler_move_forward
return if @subject.started_turn
@subject.started_turn = true
@subject.move_forward
wait_for_moving
end

#--------------------------------------------------------------------------
# new method: start_battler_move_origin
#--------------------------------------------------------------------------
def start_battler_move_origin
@subject.started_turn = nil
move_battlers_origin
wait_for_moving
@subject.face_opposing_party rescue 0
end

#--------------------------------------------------------------------------
# new method: move_battlers_origin
#--------------------------------------------------------------------------
def move_battlers_origin
for member in all_battle_members
next if member.dead?
next unless member.exist?
member.move_origin
end
end

#--------------------------------------------------------------------------
# new method: wait_for_moving
#--------------------------------------------------------------------------
def wait_for_moving
update_for_wait
update_for_wait while @spriteset.moving?
end

end # Scene_Battle

#==============================================================================
#
# ¥ End of File
#
#==============================================================================

(poo, my hide tags did not work)

Anyway I just want instructions on making one simple tweak. When party members die, they keep right on marching. They're in what the engine calls "step animation". I just want to make dead party members stop "marching in place". I don't even need them to lie down and play dead. It's just distracting as heck to me how they keep animating when they're dead.

Tanks you!

[RMVX ACE] Extra Enemy Actions

author=Red_Nova
I had this exact problem, and I think I can guess what the cause for yours:

When an enemy selects its actions for a turn, it selects all of them at once judging by the parameters is has at that moment. For example, if a battler only has 30 MP, it will select two skills that cost 30 MP to use for its actions because, at that exact moment, it can satisfy the requirements for both skills. However, when the second action comes during battle, it can't use the skill because the first action drained all of its available MP, and therefore does not perform the second action.

If you have a skill cooldown script, my guess is that the enemy is selecting the same skill twice. You only see one skill.


To solve it, you'll need to overwrite the process_action method in Scene_Battle to add a conditional branch to check if the move is still valid. If not, then switch to a different move. I set enemies to automatically guard if they don't have the MP to perform a skill, but you can do whatever you want.

EDIT: Fished out my code.

class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
  # * Battle Action Processing
  #--------------------------------------------------------------------------
  def process_action
    return if scene_changing?
    if !@subject || !@subject.current_action
      @subject = BattleManager.next_subject
    end
    return turn_end unless @subject
    if @subject.current_action
      @subject.current_action.prepare
      if @subject.current_action.valid? 
        @status_window.open
        execute_action
      elsif @subject.enemy? #Make sure it's an enemy messing things up, and not an ally!
        puts "INVALID ACTION!"
        if @subject.current_action.item
          puts "Tried to use: " + @subject.current_action.item.name.to_s
        else
          puts "nil action"
        end
        @subject.current_action.set_attack #performs basic attacks if it can't do a skill
        @subject.current_action.set_guard if !@subject.current_action.valid? #guards if you can't even do an attack
        puts "NEW ACTION: " + @subject.current_action.item.name.to_s
        @status_window.open
        execute_action
      end 
      
      @subject.remove_current_action
    end
    process_action_end unless @subject.current_action
  end
end #Scene_Battle


It works in a default project in Ace. If it tries to use a skill it doesn't have the requirements for anymore, it'll default to a basic attack. If THAT'S invalid, it'll switch to a guard (attacks cost MP in my game, so that's why I did what I did there). It'll output the skill the battler tried to use as well as the skill it ended up using in the debug line for you to see what went wrong.

How does that work?


The code is definitely working. The Attack Chimera is now sometimes taking multiple actions in a turn. It doesn't always take both of its actions, still: strictly speaking, it should probably open the battle with Rimefrost Breath and Venomous Bite given the priorities given. I saw it use that combo a couple times, but towards the end of the battle. Its first turn, it just used Venomous Bite and then no other action and its second turn it just used Rimefrost Breath and then no other action, but I saw it combo those (and various other permutations) towards the end of the fight (I went in test play and just guarded until it killed me).

On Further Observation: As far as I can tell, on the first turn of combat is one time that the enemy consistently fails to take multiple actions.

Since "sometimes" is a huge improvement over "never" in terms of taking multiple actions, even if it's not "always", and since it turned out that Attack Chimera is the only enemy out of 17 for the first leg of the game that has multiple actions w/o casting Haste on itself anyway, I'm prepared to tentatively call this issue *RESOLVED* for the time being.

Thanks, Red_Nova!! Thanks everyone else for your input too.

46031kHz

Unfortunately, it won't let me run this. It says i'm missing the 2k3 RTP, but I just installed it.

Screenshot Survival 20XX

@Momeka: thank you!

@Frogge: I see your point, mate (well, about the characters: honestly, I believe you about the neon signs and stuff but my pixel-blind eye is not acute enough to actually see it or be bothered by it) but it would be tremendously impractical to either completely overhaul the maps or completely overhaul the characters. Since those maps are (atm) just used for a short introductory sequence at the beginning of the game, fingers crossed it is not the kiss of death and does not bother most people as much as it bothers you. I do wish I'd noticed it sooner.

@Healy: those floating islands are dope. What goes behind them (if you know)? I'm assuming there's a cool panorama and not just solid lilac.

[RMVX ACE] Extra Enemy Actions

@Red_Nova: thank you, thank you, thank you! I think that's probably exactly what I need.

I'll plug that code in, in the next couple of days, and see if and how it works. I'll also experiment with multi-action enemies that don't also have cooldown/TP based skills, since cooldowns and TP are kind of tricky to track because they're invisible.

(Claw, Claw, Bite BTW is a physical attack that has a 75% chance to follow on with a second claw, which then has a 50% chance to follow up with a bite. (I am bad at maths what does that make the chance of the bite actually going off. Is it around 37.5% or am I high? )

I Would Like To Review Some Games That Haven't Been Reviewed

My latest two reviews are up.

Edit: Found out I'm unable to run 46031Khz. Don't seem to have the latest RTP.
Edit 2: Specimen Girl review pending.
Edit 3: Specimen Girl review up.

Screenshot Survival 20XX

These are not as impressive as the stuff on the past couple pages, I'm afraid, but here goes:






I'm aware that there's a bit of an issue with the size of the characters relative to the size of the map objects (the former are a bit small). It's a flaw I'm prepared to live with for now.

What are you thinking about? (game development edition)

@Barretorbix:

Thank God I dove in when I was a teenage idiot with no idea what I was getting into. I think if I'd actually been a rational adult and applied any analysis to the decision, I never would have gotten into solo/amateur/insert euphemism for RPG Maker here game design.

[RMVX ACE] Extra Enemy Actions

Kory I think you maybe got a little confused...we're trying to figure out how to get enemies to take two actions in one turn, we're already good with how to give them a pool of more than one skill to choose from.

One obvious workaround I haven't tried yet is using it as a trait tied to a status effect then giving the monster that status effect at the start of battle (either through eventing or maybe there's a trait that does that). Since the status effect trait of Extra Actions is what's working for PCs (none of the PCs innately have multiple actions, there's just one of them that can cast Haste), maybe it will work for monsters too.

What are you thinking about right now?

author=kentona
Nintendo straight up broke Mario's neck in the Super Smash Bros Ultimate reveal.


...wut