The Book of Shadows (Released 9.12.19)

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Last few weeks have been spent working on Chapter 2, which is now done. Chapter 3 work is in progress now. Version 1.02 of the demo is almost ready for release, it just needs some testing to make sure that one of the bug fixes doesn't introduce 3 more bugs.

In the meantime, there are new screenshots on the main page of Chapter 2 and 3, here is a video so you can see some Chapter 3 progress (music in the video by Geoff Moore). This is of the first boss fight in Chapter 3, and it got a little hairy for me due to some early inflictions of Reversal on my characters (Reversal reverses the effect of healing spells, so if you cast a healing spell on them it harms them instead).




You can also see my playtime quickly when I load the save game. I did fast forward a little through some events to make that save game for the video, a normal run through is at about the 5:45 - 6 hour mark for me at this point.

Edit: The observant person may notice that the names are off in the video (it says John instead of Cedric). That is because this is from my testing save, which still has the placeholder names I was using earlier.
 
Last edited by a moderator:

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Version 1.02 is now live! Unfortunately this version will break your save games, due to an overhaul of the items database. You could still continue with an old save, but you may find that your potions are no longer there.

I did include with the update 5 of my save files from my playthrough of Chapter 1. This way you can pick up the demo at those spots instead of doing a full restart.

Full Version 1.02 changelog below:

-States no longer are removed upon death. This fixes the bug where Alex's strategies would expire if someone was dead.

-Fixed a bug with Yanfly's Lunatic States script. Seems it was missing an eval line somehow.

-Regeneration no longer applied to dead characters. This fixes the rare bug where a rat would regenerate back to life when fighting the rat master.

-Characters in the reserves now gain JP as well as EXP. Now when you get to the part of the demo where you have 5 characters, the one not in the party will still gain JP.

-The Issue of Undead Me now correctly reads #11, not #5.

-Some lore has been added for the interested player to read. To read it, search the bookcase in the Stardew Library.

-Fixed bug where you could not unlock the door in Marie's room unless you had checked the door from the opposite side first.

-Fixed the bug where you could stop for food indefinitely for Josie when climbing the tower.

-A tutorial is now included to explain how to play after the intro is done.

-A battle tutorial has been added to the first battle. However, since Talia's faceset has not arrived yet that tutorial does nothing if you select to run it.

-Some scenes in the game have been changed to flow better. Specifically these scenes are: The intro, the scene where Sarah and you talk about money, the scene where you meet Liana and Cedric, the scene where you open the chest in Liana's room, the meanwhile scene when you rest for the first time, and the scene(s) if you talk to the flower merchant (once with Sarah, once with Liana in the party).

-Potion recipes for the HP potions are now final, and all are included in the game. Since the recipes are saved to the save file, to see these changes you will need to start a new game.

-All HP and MP potions have been rebalanced, with some new tiers of potions introduced. Because of this, starting a new game is advised, as your item inventory will be messed up otherwise.

-Healing spells have been rebalanced. You should do a little more HP with the spells when you first learn them, but they gain in power quite a bit slower than before.
 
Last edited by a moderator:

Nanaki_Fan

Veteran
Veteran
Joined
Jul 15, 2014
Messages
501
Reaction score
159
First Language
English
Primarily Uses
Hey this is looking good! going to add this to my watch list :)
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Hey this is looking good! going to add this to my watch list :)
Thanks! You can thank the previous 1 - 4 pages of people who broke the game and/or caught the really dumb bugs/ideas from the first couple of drafts, I think without them it would probably not be in the shape it is now.
 
Last edited by a moderator:

Mushinronja

Veteran
Veteran
Joined
May 12, 2014
Messages
87
Reaction score
30
First Language
English
Primarily Uses
I need to find me a rar-opening thingamajig, lol.
 

Trihan

Speedy Scripter
Veteran
Joined
Apr 12, 2012
Messages
2,309
Reaction score
1,479
First Language
English
Primarily Uses
RMMV
bgillisp, not sure if you're still looking for this, but after reading your original issue with Yanfly's victory aftermath script I've made a small modification to show a different message if there were no drops:

Code:
#==============================================================================# # �� Yanfly Engine Ace - Victory Aftermath v1.04# -- Last Updated: 2015.05.07 modified by Trihan# -- Level: Easy, Normal, Hard# -- Requires: n/a# -- Special Thanks: Yami for Bug Fixes.# #==============================================================================$imported = {} if $imported.nil?$imported["YEA-VictoryAftermath"] = true#==============================================================================# �� Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2015.05.07 - Added quotes for having no drops at the end of a battle, as it#              makes no sense to have actors talking about spoilers if there#              weren't any.# 2014.03.19 - Fixed a bug where if the battle ends with a stat buff/debuff and#              it will display the wrong parameters.# 2012.01.07 - Compatibility Update: JP Manager# 2012.01.01 - Bug Fixed: Quote tags were mislabeled.# 2011.12.26 - Compatibility Update: Command Autobattle# 2011.12.16 - Started Script and Finished.# #==============================================================================# �� Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# At the end of each battle, RPG Maker VX Ace by default shows text saying that# the party has gained so-and-so EXP while this person leveled up and your# party happened to find these drops. This script changes that text into# something more visual for your players to see. Active battle members will be# seen gaining EXP, any kind of level up changes, and a list of the items# obtained through drops.# #==============================================================================# �� Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To install this script, open up your script editor and copy/paste this script# to an open slot below �� Materials/�f�� but above �� Main. Remember to save.# # -----------------------------------------------------------------------------# Actor Notetags - These notetags go in the actors notebox in the database.# -----------------------------------------------------------------------------# <win quotes>#  string#  string# </win quotes># Sets the win quote for the actor. The strings are continuous and can use# text codes. Use \n for a line break. Type in what you want the actor to say# for the particular win quote. Use [New Quote] in between the two tags to# start up a new quote.# # <level quotes>#  string#  string# </level quotes># Sets the level up quote for the actor. The strings are continuous and can use# text codes. Use \n for a line break. Type in what you want the actor to say# for the particular win quote. Use [New Quote] in between the two tags to# start up a new quote.# # <drops quotes>#  string#  string# </drops quotes># Sets the drops quote for the actor. The strings are continuous and can use# text codes. Use \n for a line break. Type in what you want the actor to say# for the particular win quote. Use [New Quote] in between the two tags to# start up a new quote.# # -----------------------------------------------------------------------------# Class Notetags - These notetags go in the class notebox in the database.# -----------------------------------------------------------------------------# <win quotes>#  string#  string# </win quotes># Sets the win quote for the class. The strings are continuous and can use# text codes. Use \n for a line break. Type in what you want the actor to say# for the particular win quote. Use [New Quote] in between the two tags to# start up a new quote.# # <level quotes>#  string#  string# </level quotes># Sets the level up quote for the class. The strings are continuous and can use# text codes. Use \n for a line break. Type in what you want the actor to say# for the particular win quote. Use [New Quote] in between the two tags to# start up a new quote.# # <drops quotes>#  string#  string# </drops quotes># Sets the drops quote for the class. The strings are continuous and can use# text codes. Use \n for a line break. Type in what you want the actor to say# for the particular win quote. Use [New Quote] in between the two tags to# start up a new quote.# #==============================================================================# �� 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 VICTORY_AFTERMATH        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # - General Settings -    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # These are various settings that are used throughout the Victory Aftermath    # portion of a battle. Adjust them as you see fit.    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    VICTORY_BGM  = RPG::BGM.new("Field1", 100, 100)    # Victory BGM    VICTORY_TICK = RPG::SE.new("Decision1", 100, 150)  # EXP ticking SFX    LEVEL_SOUND  = RPG::SE.new("Up4", 80, 150)         # Level Up SFX    SKILLS_TEXT  = "New Skills"                        # New skills text title.        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # - Important Settings -    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # These are some important settings so please set them up properly. This    # section includes a switch that allows you to skip the victory aftermath    # phase (for those back to back battles and making them seamless) and it    # also allows you to declare a common event to run after each battle. If    # you do not wish to use either of these features, set them to 0. The    # common event will run regardless of win or escape.    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    SKIP_AFTERMATH_SWITCH  = 0  # If switch on, skip aftermath. 0 to disable.    SKIP_MUSIC_SWITCH      = 0  # If switch on, skip music. 0 to disable.    AFTERMATH_COMMON_EVENT = 0  # Runs common event after battle. 0 to disable.        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # - Top Text Settings -    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # Here, you can adjust the various text that appears in the window that    # appears at the top of the screen.    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    TOP_TEAM         = "%s's team"           # Team name used.    TOP_VICTORY_TEXT = "%s is victorious!"   # Text used to display victory.    TOP_LEVEL_UP     = "%s has leveled up!"  # Text used to display level up.    TOP_SPOILS       = "Victory Spoils!"     # Text used for spoils.        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # - EXP Gauge Settings -    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # Adjust how the EXP Gauge appears for the Victory Aftermath here. This    # includes the text display, the font size, the colour of the gauges, and    # more. Adjust it all here.    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    VICTORY_EXP  = "+%sEXP"      # Text used to display EXP.    EXP_PERCENT  = "%1.2f%%"     # The way EXP percentage will be displayed.    LEVELUP_TEXT = "LEVEL UP!"   # Text to replace percentage when leveled.    MAX_LVL_TEXT = "MAX LEVEL"   # Text to replace percentage when max level.    FONTSIZE_EXP = 20            # Font size used for EXP.    EXP_TICKS    = 15            # Ticks to full EXP    EXP_GAUGE1   = 12            # "Window" skin text colour for gauge.    EXP_GAUGE2   = 4             # "Window" skin text colour for gauge.    LEVEL_GAUGE1 = 13            # "Window" skin text colour for leveling.    LEVEL_GAUGE2 = 5             # "Window" skin text colour for leveling.        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # - Victory Messages -    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # In the Victory Aftermath, actors can say unique things. This is the pool    # of quotes used for actors without any custom victory quotes. Note that    # actors with custom quotes will take priority over classes with custom    # quotes, which will take priority over these default quotes. Use \n for    # a line break in the quotes.    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    HEADER_TEXT = "\e>\eC[6]%s\eC[0]\e<\n"  # Always at start of messages.    FOOTER_TEXT = ""                        # Always at end of messages.        # Win Quotes are what the actors say when a battle is won.    VICTORY_QUOTES ={    # :type   => Quotes      #------------------------------------------------------------------------      :win    => [ # Occurs as initial victory quote.                   '"We won! What an exciting fight!"',                   '"I didn\'t even break a sweat."',                   '"That wasn\'t so tough."',                   '"Let\'s fight something harder!"',                 ],# Do not remove this.      #------------------------------------------------------------------------      :level  => [ # Occurs as initial victory quote.                   '"Yes! Level up!"',                   '"I\'ve gotten stronger!"',                   '"Try to keep up with me!"',                   '"I\'ve grown again!"',                 ],# Do not remove this.      #------------------------------------------------------------------------      :drops  => [ # Occurs as initial victory quote.                   '"I\'ll be taking these."',                   '"To the victor goes the spoils."',                   '"The enemies dropped something!"',                   '"Hey, what\'s this?"',                 ],      :no_drops => [ '"What, no loot?"' ], # Do not remove this.      #------------------------------------------------------------------------    } # Do not remove this.      end # VICTORY_AFTERMATHend # 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.#==============================================================================module YEA  module REGEXP  module BASEITEM        NEW_QUOTE = /\[(?:NEW_QUOTE|new quote)\]/i        WIN_QUOTE_ON        = /<(?:WIN_QUOTES|win quote|win quotes)>/i    WIN_QUOTE_OFF       = /<\/(?:WIN_QUOTES|win quote|win quotes)>/i    LEVEL_QUOTE_ON      = /<(?:LEVEL_QUOTES|level quote|level quotes)>/i    LEVEL_QUOTE_OFF     = /<\/(?:LEVEL_QUOTES|level quote|level quotes)>/i    DROPS_QUOTE_ON      = /<(?:DROPS_QUOTES|drops quote|drops quotes)>/i    DROPS_QUOTE_OFF     = /<\/(?:DROPS_QUOTES|drops quote|drops quotes)>/i    NO_DROPS_QUOTE_ON   = /<(?:NO_DROPS_QUOTES|no drops quote|no drops quotes)>/i    NO_DROPS_QUOTE_OFF  = /<\/(?:NO_DROPS_QUOTES|no drops quote|no drops quotes)>/i      end # BASEITEM  end # REGEXPend # YEA#==============================================================================# �� Switch#==============================================================================module Switch    #--------------------------------------------------------------------------  # self.skip_aftermath  #--------------------------------------------------------------------------  def self.skip_aftermath    return false if YEA::VICTORY_AFTERMATH::SKIP_AFTERMATH_SWITCH <= 0    return $game_switches[YEA::VICTORY_AFTERMATH::SKIP_AFTERMATH_SWITCH]  end    #--------------------------------------------------------------------------  # self.skip_aftermath_music  #--------------------------------------------------------------------------  def self.skip_aftermath_music    return false if YEA::VICTORY_AFTERMATH::SKIP_MUSIC_SWITCH <=0    return $game_switches[YEA::VICTORY_AFTERMATH::SKIP_MUSIC_SWITCH]  end    end # Switch#==============================================================================# �� Numeric#==============================================================================class Numeric    #--------------------------------------------------------------------------  # new method: group_digits  #--------------------------------------------------------------------------  unless $imported["YEA-CoreEngine"]  def group; return self.to_s; end  end # $imported["YEA-CoreEngine"]    end # Numeric#==============================================================================# �� DataManager#==============================================================================module DataManager    #--------------------------------------------------------------------------  # alias method: load_database  #--------------------------------------------------------------------------  class <<self; alias load_database_va load_database; end  def self.load_database    load_database_va    load_notetags_va  end    #--------------------------------------------------------------------------  # new method: load_notetags_va  #--------------------------------------------------------------------------  def self.load_notetags_va    groups = [$data_actors, $data_classes]    for group in groups      for obj in group        next if obj.nil?        obj.load_notetags_va      end    end  end  end # DataManager#==============================================================================# �� RPG::BaseItem#==============================================================================class RPG::BaseItem    #--------------------------------------------------------------------------  # public instance variables  #--------------------------------------------------------------------------  attr_accessor :win_quotes  attr_accessor :level_quotes  attr_accessor :drops_quotes  attr_accessor :no_drops_quotes    #--------------------------------------------------------------------------  # common cache: load_notetags_va  #--------------------------------------------------------------------------  def load_notetags_va    @win_quotes = [""]    @level_quotes = [""]    @drops_quotes = [""]    @no_drops_quotes = [""]    @victory_quote_type = nil    #---    self.note.split(/[\r\n]+/).each { |line|      case line      #---      when YEA::REGEXP::BASEITEM::WIN_QUOTE_ON        @victory_quote_type = :win_quote      when YEA::REGEXP::BASEITEM::WIN_QUOTE_OFF        @victory_quote_type = nil      when YEA::REGEXP::BASEITEM::LEVEL_QUOTE_ON        @victory_quote_type = :level_quote      when YEA::REGEXP::BASEITEM::LEVEL_QUOTE_OFF        @victory_quote_type = nil      when YEA::REGEXP::BASEITEM::DROPS_QUOTE_ON        @victory_quote_type = :drops_quote      when YEA::REGEXP::BASEITEM::DROPS_QUOTE_OFF        @victory_quote_type = nil      when YEA::REGEXP::BASEITEM::NO_DROPS_QUOTE_ON        @victory_quote_type = :no_drops_quote      when YEA::REGEXP::BASEITEM::NO_DROPS_QUOTE_OFF        @victory_quote_type = nil      #---      when YEA::REGEXP::BASEITEM::NEW_QUOTE        case @victory_quote_type        when nil; next        when :win_quote;   @win_quotes.push("")        when :level_quote; @level_quotes.push("")        when :drops_quote; @drops_quotes.push("")        when :no_drops_quote; @no_drops_quotes.push("")        end      #---      else        case @victory_quote_type        when nil; next        when :win_quote;   @win_quotes[@win_quotes.size-1] += line.to_s        when :level_quote; @level_quotes[@level_quotes.size-1] += line.to_s        when :drops_quote; @drops_quotes[@drops_quotes.size-1] += line.to_s        when :no_drops_quote; @no_drops_quotes[@no_drops_quotes.size-1] += line.to_s        end      end    } # self.note.split    #---    return unless self.is_a?(RPG::Class)    quotes = YEA::VICTORY_AFTERMATH::VICTORY_QUOTES    @win_quotes = quotes[:win].clone if @win_quotes == [""]    @level_quotes = quotes[:level].clone if @level_quotes == [""]    @drops_quotes = quotes[:drops].clone if @drops_quotes == [""]    @no_drops_quotes = quotes[:no_drops].clone if @no_drops_quotes == [""]  end  end # RPG::BaseItem#==============================================================================# �� BattleManager#==============================================================================module BattleManager    #--------------------------------------------------------------------------  # overwrite method: self.process_victory  #--------------------------------------------------------------------------  def self.process_victory    if $imported["YEA-CommandAutobattle"]      SceneManager.scene.close_disable_autobattle_window    end    return skip_aftermath if Switch.skip_aftermath    play_battle_end_me    gain_jp if $imported["YEA-JPManager"]    display_exp    gain_exp    gain_gold    gain_drop_items    close_windows    SceneManager.return    replay_bgm_and_bgs    battle_end(0)    return true  end    #--------------------------------------------------------------------------  # new method: self.skip_aftermath  #--------------------------------------------------------------------------  def self.skip_aftermath    $game_party.all_members.each do |actor|      actor.gain_exp($game_troop.exp_total)    end    $game_party.gain_gold($game_troop.gold_total)    $game_troop.make_drop_items.each do |item|      $game_party.gain_item(item, 1)    end    close_windows    SceneManager.return    replay_bgm_and_bgs    battle_end(0)  end    #--------------------------------------------------------------------------  # overwrite method: self.play_battle_end_me  #--------------------------------------------------------------------------  def self.play_battle_end_me    return if Switch.skip_aftermath_music    $game_system.battle_end_me.play    YEA::VICTORY_AFTERMATH::VICTORY_BGM.play  end    #--------------------------------------------------------------------------  # new method: self.set_victory_text  #--------------------------------------------------------------------------  def self.set_victory_text(actor, type)    text = "" + sprintf(YEA::VICTORY_AFTERMATH::HEADER_TEXT, actor.name)    text += actor.victory_quotes(type)[rand(actor.victory_quotes(type).size)]    text += YEA::VICTORY_AFTERMATH::FOOTER_TEXT    $game_message.face_name = actor.face_name    $game_message.face_index = actor.face_index    $game_message.add(text)    wait_for_message  end    #--------------------------------------------------------------------------  # overwrite method: self.display_exp  #--------------------------------------------------------------------------  def self.display_exp    SceneManager.scene.show_victory_display_exp    actor = $game_party.random_target    @victory_actor = actor    set_victory_text(@victory_actor, :win)  end    #--------------------------------------------------------------------------  # overwrite method: self.gain_exp  #--------------------------------------------------------------------------  def self.gain_exp    $game_party.all_members.each do |actor|      temp_actor = Marshal.load(Marshal.dump(actor))      actor.gain_exp($game_troop.exp_total)      next if actor.level == temp_actor.level      SceneManager.scene.show_victory_level_up(actor, temp_actor)      set_victory_text(actor, :level)      wait_for_message    end  end    #--------------------------------------------------------------------------  # overwrite method: self.gain_gold  #--------------------------------------------------------------------------  def self.gain_gold    $game_party.gain_gold($game_troop.gold_total)  end    #--------------------------------------------------------------------------  # overwrite method: self.gain_drop_items  #--------------------------------------------------------------------------  def self.gain_drop_items    drops = []    $game_troop.make_drop_items.each do |item|      $game_party.gain_item(item, 1)      drops.push(item)    end    SceneManager.scene.show_victory_spoils($game_troop.gold_total, drops)    if drops == [] && $game_troop.gold_total == 0      set_victory_text(@victory_actor, :no_drops)    else      set_victory_text(@victory_actor, :drops)    end    wait_for_message  end    #--------------------------------------------------------------------------  # new method: self.close_windows  #--------------------------------------------------------------------------  def self.close_windows    SceneManager.scene.close_victory_windows  end    #--------------------------------------------------------------------------  # alias method: load_database  #--------------------------------------------------------------------------  class <<self; alias battle_end_va battle_end; end  def self.battle_end(result)    battle_end_va(result)    return if result == 2    return if YEA::VICTORY_AFTERMATH::AFTERMATH_COMMON_EVENT <= 0    event_id = YEA::VICTORY_AFTERMATH::AFTERMATH_COMMON_EVENT    $game_temp.reserve_common_event(event_id)  end  end # BattleManager#==============================================================================# �� Game_Actor#==============================================================================class Game_Actor < Game_Battler    #--------------------------------------------------------------------------  # overwrite method: gain_exp  #--------------------------------------------------------------------------  def gain_exp(exp)    enabled = !SceneManager.scene_is?(Scene_Battle)    change_exp(self.exp + (exp * final_exp_rate).to_i, enabled)  end    #--------------------------------------------------------------------------  # new method: victory_quotes  #--------------------------------------------------------------------------  def victory_quotes(type)    case type    when :win      return self.actor.win_quotes if self.actor.win_quotes != [""]      return self.class.win_quotes    when :level      return self.actor.level_quotes if self.actor.level_quotes != [""]      return self.class.level_quotes    when :drops      return self.actor.drops_quotes if self.actor.drops_quotes != [""]      return self.class.drops_quotes    when :no_drops      return self.actor.no_drops_quotes if self.actor.no_drops_quotes != [""]      return self.class.no_drops_quotes    else      return ["NOTEXT"]    end  end  end # Game_Actor#==============================================================================# �� Window_VictoryTitle#==============================================================================class Window_VictoryTitle < Window_Base    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize    super(0, 0, Graphics.width, fitting_height(1))    self.z = 200    self.openness = 0  end    #--------------------------------------------------------------------------  # refresh  #--------------------------------------------------------------------------  def refresh(message = "")    contents.clear    draw_text(0, 0, contents.width, line_height, message, 1)  end  end # Window_VictoryTitle#==============================================================================# �� Window_VictoryEXP_Back#==============================================================================class Window_VictoryEXP_Back < Window_Selectable    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize    super(0, fitting_height(1), Graphics.width, window_height)    self.z = 200    self.openness = 0  end    #--------------------------------------------------------------------------  # window_height  #--------------------------------------------------------------------------  def window_height    return Graphics.height - fitting_height(4) - fitting_height(1)  end    #--------------------------------------------------------------------------  # col_max  #--------------------------------------------------------------------------  def col_max; return item_max; end    #--------------------------------------------------------------------------  # spacing  #--------------------------------------------------------------------------  def spacing; return 8; end    #--------------------------------------------------------------------------  # item_max  #--------------------------------------------------------------------------  def item_max; return $game_party.battle_members.size; end    #--------------------------------------------------------------------------  # open  #--------------------------------------------------------------------------  def open    @exp_total = $game_troop.exp_total    super  end    #--------------------------------------------------------------------------  # item_rect  #--------------------------------------------------------------------------  def item_rect(index)    rect = Rect.new    rect.width = item_width    rect.height = contents.height    rect.x = index % col_max * (item_width + spacing)    rect.y = index / col_max * item_height    return rect  end    #--------------------------------------------------------------------------  # draw_item  #--------------------------------------------------------------------------  def draw_item(index)    actor = $game_party.battle_members[index]    return if actor.nil?    rect = item_rect(index)    reset_font_settings    draw_actor_name(actor, rect)    draw_exp_gain(actor, rect)    draw_jp_gain(actor, rect)    draw_actor_face(actor, rect)  end    #--------------------------------------------------------------------------  # draw_actor_name  #--------------------------------------------------------------------------  def draw_actor_name(actor, rect)    name = actor.name    draw_text(rect.x, rect.y+line_height, rect.width, line_height, name, 1)  end    #--------------------------------------------------------------------------  # draw_actor_face  #--------------------------------------------------------------------------  def draw_actor_face(actor, rect)    face_name = actor.face_name    face_index = actor.face_index    bitmap = Cache.face(face_name)    rw = [rect.width, 96].min    face_rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, rw, 96)    rx = (rect.width - rw) / 2 + rect.x    contents.blt(rx, rect.y + line_height * 2, bitmap, face_rect, 255)  end    #--------------------------------------------------------------------------  # draw_exp_gain  #--------------------------------------------------------------------------  def draw_exp_gain(actor, rect)    dw = rect.width - (rect.width - [rect.width, 96].min) / 2    dy = rect.y + line_height * 3 + 96    fmt = YEA::VICTORY_AFTERMATH::VICTORY_EXP    text = sprintf(fmt, actor_exp_gain(actor).group)    contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP    change_color(power_up_color)    draw_text(rect.x, dy, dw, line_height, text, 2)  end    #--------------------------------------------------------------------------  # actor_exp_gain  #--------------------------------------------------------------------------  def actor_exp_gain(actor)    n = @exp_total * actor.final_exp_rate    return n.to_i  end    #--------------------------------------------------------------------------  # draw_jp_gain  #--------------------------------------------------------------------------  def draw_jp_gain(actor, rect)    return unless $imported["YEA-JPManager"]    dw = rect.width - (rect.width - [rect.width, 96].min) / 2    dy = rect.y + line_height * 4 + 96    fmt = YEA::JP::VICTORY_AFTERMATH    text = sprintf(fmt, actor_jp_gain(actor).group, Vocab::jp)    contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP    change_color(power_up_color)    draw_text(rect.x, dy, dw, line_height, text, 2)  end    #--------------------------------------------------------------------------  # actor_jp_gain  #--------------------------------------------------------------------------  def actor_jp_gain(actor)    n = actor.battle_jp_earned    if actor.exp + actor_exp_gain(actor) > actor.exp_for_level(actor.level + 1)      n += YEA::JP::LEVEL_UP unless actor.max_level?    end    return n  end  end # Window_VictoryEXP_Back#==============================================================================# �� Window_VictoryEXP_Front#==============================================================================class Window_VictoryEXP_Front < Window_VictoryEXP_Back    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize    super    self.back_opacity = 0    @ticks = 0    @counter = 30    contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP  end    #--------------------------------------------------------------------------  # update  #--------------------------------------------------------------------------  def update    super    update_tick  end    #--------------------------------------------------------------------------  # update_tick  #--------------------------------------------------------------------------  def update_tick    return unless self.openness >= 255    return unless self.visible    return if complete_ticks?    @counter -= 1    return unless @counter <= 0    return if @ticks >= YEA::VICTORY_AFTERMATH::EXP_TICKS    YEA::VICTORY_AFTERMATH::VICTORY_TICK.play    @counter = 4    @ticks += 1    refresh  end    #--------------------------------------------------------------------------  # complete_ticks?  #--------------------------------------------------------------------------  def complete_ticks?    for actor in $game_party.battle_members      total_ticks = YEA::VICTORY_AFTERMATH::EXP_TICKS      bonus_exp = actor_exp_gain(actor) * @ticks / total_ticks      now_exp = actor.exp - actor.current_level_exp + bonus_exp      next_exp = actor.next_level_exp - actor.current_level_exp      rate = now_exp * 1.0 / next_exp      return false if rate < 1.0    end    return true  end    #--------------------------------------------------------------------------  # draw_item  #--------------------------------------------------------------------------  def draw_item(index)    actor = $game_party.battle_members[index]    return if actor.nil?    rect = item_rect(index)    draw_actor_exp(actor, rect)  end    #--------------------------------------------------------------------------  # exp_gauge1  #--------------------------------------------------------------------------  def exp_gauge1; return text_color(YEA::VICTORY_AFTERMATH::EXP_GAUGE1); end    #--------------------------------------------------------------------------  # exp_gauge2  #--------------------------------------------------------------------------  def exp_gauge2; return text_color(YEA::VICTORY_AFTERMATH::EXP_GAUGE2); end    #--------------------------------------------------------------------------  # lvl_gauge1  #--------------------------------------------------------------------------  def lvl_gauge1; return text_color(YEA::VICTORY_AFTERMATH::LEVEL_GAUGE1); end    #--------------------------------------------------------------------------  # lvl_gauge2  #--------------------------------------------------------------------------  def lvl_gauge2; return text_color(YEA::VICTORY_AFTERMATH::LEVEL_GAUGE2); end    #--------------------------------------------------------------------------  # draw_actor_exp  #--------------------------------------------------------------------------  def draw_actor_exp(actor, rect)    if actor.max_level?      draw_exp_gauge(actor, rect, 1.0)      return    end    total_ticks = YEA::VICTORY_AFTERMATH::EXP_TICKS    bonus_exp = actor_exp_gain(actor) * @ticks / total_ticks    now_exp = actor.exp - actor.current_level_exp + bonus_exp    next_exp = actor.next_level_exp - actor.current_level_exp    rate = now_exp * 1.0 / next_exp    draw_exp_gauge(actor, rect, rate)  end    #--------------------------------------------------------------------------  # draw_exp_gauge  #--------------------------------------------------------------------------  def draw_exp_gauge(actor, rect, rate)    rate = [[rate, 1.0].min, 0.0].max    dx = (rect.width - [rect.width, 96].min) / 2 + rect.x    dy = rect.y + line_height * 2 + 96    dw = [rect.width, 96].min    colour1 = rate >= 1.0 ? lvl_gauge1 : exp_gauge1    colour2 = rate >= 1.0 ? lvl_gauge2 : exp_gauge2    draw_gauge(dx, dy, dw, rate, colour1, colour2)    fmt = YEA::VICTORY_AFTERMATH::EXP_PERCENT    text = sprintf(fmt, [rate * 100, 100.00].min)    if [rate * 100, 100.00].min == 100.00      text = YEA::VICTORY_AFTERMATH::LEVELUP_TEXT      text = YEA::VICTORY_AFTERMATH::MAX_LVL_TEXT if actor.max_level?    end    draw_text(dx, dy, dw, line_height, text, 1)  end  end # Window_VictoryEXP_Front#==============================================================================# �� Window_VictoryLevelUp#==============================================================================class Window_VictoryLevelUp < Window_Base    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize    super(0, fitting_height(1), Graphics.width, window_height)    self.z = 200    hide  end    #--------------------------------------------------------------------------  # window_height  #--------------------------------------------------------------------------  def window_height    return Graphics.height - fitting_height(4) - fitting_height(1)  end    #--------------------------------------------------------------------------  # refresh  #--------------------------------------------------------------------------  def refresh(actor, temp_actor)    contents.clear    reset_font_settings    YEA::VICTORY_AFTERMATH::LEVEL_SOUND.play    draw_actor_changes(actor, temp_actor)  end    #--------------------------------------------------------------------------  # draw_actor_changes  #--------------------------------------------------------------------------  def draw_actor_changes(actor, temp_actor)    dx = contents.width / 16    draw_actor_image(actor, temp_actor, dx)    draw_param_names(actor, dx)    draw_former_stats(temp_actor)    draw_arrows    draw_newer_stats(actor, temp_actor)    draw_new_skills(actor, temp_actor)  end    #--------------------------------------------------------------------------  # draw_actor_image  #--------------------------------------------------------------------------  def draw_actor_image(actor, temp_actor, dx)    draw_text(dx, line_height, 96, line_height, actor.name, 1)    draw_actor_face(actor, dx, line_height * 2)    exp = actor.exp - temp_actor.exp    text = sprintf(YEA::VICTORY_AFTERMATH::VICTORY_EXP, exp.group)    change_color(power_up_color)    contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP    draw_text(0, line_height * 2 + 96, dx + 96, line_height, text, 2)    reset_font_settings  end    #--------------------------------------------------------------------------  # draw_param_names  #--------------------------------------------------------------------------  def draw_param_names(actor, dx)    dx += 108    change_color(system_color)    text = Vocab.level    draw_text(dx, 0, contents.width - dx, line_height, text)    dy = 0    for i in 0...8      dy += line_height      text = Vocab.param(i)      draw_text(dx, dy, contents.width - dx, line_height, text)    end  end    #--------------------------------------------------------------------------  # draw_former_stats  #--------------------------------------------------------------------------  def draw_former_stats(actor)    dw = contents.width / 2 - 12    dy = 0    change_color(normal_color)    draw_text(0, dy, dw, line_height, actor.level.group, 2)    for i in 0...8      dy += line_height      draw_text(0, dy, dw, line_height, actor.param_base(i).group, 2)    end  end    #--------------------------------------------------------------------------  # draw_arrows  #--------------------------------------------------------------------------  def draw_arrows    dx = contents.width / 2 - 12    dy = 0    change_color(system_color)    for i in 0..8      draw_text(dx, dy, 24, line_height, "��", 1)      dy += line_height    end  end    #--------------------------------------------------------------------------  # draw_newer_stats  #--------------------------------------------------------------------------  def draw_newer_stats(actor, temp_actor)    dx = contents.width / 2 + 12    dw = contents.width - dx    dy = 0    change_color(param_change_color(actor.level - temp_actor.level))    draw_text(dx, dy, dw, line_height, actor.level.group, 0)    for i in 0...8      dy += line_height      change_color(param_change_color(actor.param_base(i) - temp_actor.param_base(i)))      draw_text(dx, dy, dw, line_height, actor.param_base(i).group, 0)    end  end  #--------------------------------------------------------------------------  # draw_new_skills  #--------------------------------------------------------------------------  def draw_new_skills(actor, temp_actor)    return if temp_actor.skills.size == actor.skills.size    dw = 172 + 24    dx = contents.width - dw    change_color(system_color)    text = YEA::VICTORY_AFTERMATH::SKILLS_TEXT    draw_text(dx, 0, dw, line_height, text, 0)  end  end # Window_VictoryLevelUp#==============================================================================# �� Window_VictorySkills#==============================================================================class Window_VictorySkills < Window_Selectable    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize    dy = fitting_height(1) + 24    dw = 172 + 24 + 24    dh = Graphics.height - fitting_height(4) - fitting_height(1) - 24    super(Graphics.width - dw, dy, dw, dh)    self.opacity = 0    self.z = 200    hide  end    #--------------------------------------------------------------------------  # item_max  #--------------------------------------------------------------------------  def item_max; return @data.nil? ? 0 : @data.size; end    #--------------------------------------------------------------------------  # refresh  #--------------------------------------------------------------------------  def refresh(actor, temp_actor)    contents.clear    if actor.skills.size == temp_actor.skills.size      unselect      @data = []      create_contents      return    end    @data = actor.skills - temp_actor.skills    if @data.size > 8      select(0)      activate    else      unselect      deactivate    end    create_contents    draw_all_items  end    #--------------------------------------------------------------------------  # refresh  #--------------------------------------------------------------------------  def draw_item(index)    rect = item_rect(index)    skill = @data[index]    return if skill.nil?    rect.width -= 4    draw_item_name(skill, rect.x, rect.y, true)  end  end # Window_VictorySkills#==============================================================================# �� Window_VictorySpoils#==============================================================================class Window_VictorySpoils < Window_ItemList    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize    super(0, fitting_height(1), Graphics.width, window_height)    self.z = 200    hide  end    #--------------------------------------------------------------------------  # window_height  #--------------------------------------------------------------------------  def window_height    return Graphics.height - fitting_height(4) - fitting_height(1)  end    #--------------------------------------------------------------------------  # spacing  #--------------------------------------------------------------------------  def spacing; return 32; end    #--------------------------------------------------------------------------  # make  #--------------------------------------------------------------------------  def make(gold, drops)    @gold = gold    @drops = drops    refresh    select(0)    activate  end    #--------------------------------------------------------------------------  # make_item_list  #--------------------------------------------------------------------------  def make_item_list    @data = [nil]    items = {}    weapons = {}    armours = {}    @goods = {}    for item in @drops      case item      when RPG::Item        items[item] = 0 if items[item].nil?        items[item] += 1      when RPG::Weapon        weapons[item] = 0 if weapons[item].nil?        weapons[item] += 1      when RPG::Armor        armours[item] = 0 if armours[item].nil?        armours[item] += 1      end    end    items = items.sort { |a,b| a[0].id <=> b[0].id }    weapons = weapons.sort { |a,b| a[0].id <=> b[0].id }    armours = armours.sort { |a,b| a[0].id <=> b[0].id }    for key in items; @goods[key[0]] = key[1]; @data.push(key[0]); end    for key in weapons; @goods[key[0]] = key[1]; @data.push(key[0]); end    for key in armours; @goods[key[0]] = key[1]; @data.push(key[0]); end  end    #--------------------------------------------------------------------------  # draw_item  #--------------------------------------------------------------------------  def draw_item(index)    item = @data[index]    rect = item_rect(index)    reset_font_settings    if item.nil?      draw_gold(rect)      return    end    rect.width -= 4    draw_item_name(item, rect.x, rect.y, true, rect.width - 24)    draw_item_number(rect, item)  end    #--------------------------------------------------------------------------  # draw_gold  #--------------------------------------------------------------------------  def draw_gold(rect)    text = Vocab.currency_unit    draw_currency_value(@gold, text, rect.x, rect.y, rect.width)  end    #--------------------------------------------------------------------------  # draw_item_number  #--------------------------------------------------------------------------  def draw_item_number(rect, item)    number = @goods[item].group    if $imported["YEA-AdjustLimits"]      contents.font.size = YEA::LIMIT::ITEM_FONT      text = sprintf(YEA::LIMIT::ITEM_PREFIX, number)      draw_text(rect, text, 2)    else      draw_text(rect, sprintf(":%s", number), 2)    end  end  end # Window_VictorySpoils#==============================================================================# �� Scene_Battle#==============================================================================class Scene_Battle < Scene_Base    #--------------------------------------------------------------------------  # alias method: create_all_windows  #--------------------------------------------------------------------------  alias scene_battle_create_all_windows_va create_all_windows  def create_all_windows    scene_battle_create_all_windows_va    create_victory_aftermath_windows  end    #--------------------------------------------------------------------------  # new method: create_victory_aftermath_windows  #--------------------------------------------------------------------------  def create_victory_aftermath_windows    @victory_title_window = Window_VictoryTitle.new    @victory_exp_window_back = Window_VictoryEXP_Back.new    @victory_exp_window_front = Window_VictoryEXP_Front.new    @victory_level_window = Window_VictoryLevelUp.new    @victory_level_skills = Window_VictorySkills.new    @victory_spoils_window = Window_VictorySpoils.new  end    #--------------------------------------------------------------------------  # new method: show_victory_display_exp  #--------------------------------------------------------------------------  def show_victory_display_exp    @victory_title_window.open    name = $game_party.battle_members[0].name    fmt = YEA::VICTORY_AFTERMATH::TOP_TEAM    name = sprintf(fmt, name) if $game_party.battle_members.size > 1    fmt = YEA::VICTORY_AFTERMATH::TOP_VICTORY_TEXT    text = sprintf(fmt, name)    @victory_title_window.refresh(text)    #---    @victory_exp_window_back.open    @victory_exp_window_back.refresh    @victory_exp_window_front.open    @victory_exp_window_front.refresh  end    #--------------------------------------------------------------------------  # new method: show_victory_level_up  #--------------------------------------------------------------------------  def show_victory_level_up(actor, temp_actor)    @victory_exp_window_back.hide    @victory_exp_window_front.hide    #---    fmt = YEA::VICTORY_AFTERMATH::TOP_LEVEL_UP    text = sprintf(fmt, actor.name)    @victory_title_window.refresh(text)    #---    @victory_level_window.show    @victory_level_window.refresh(actor, temp_actor)    @victory_level_skills.show    @victory_level_skills.refresh(actor, temp_actor)  end    #--------------------------------------------------------------------------  # new method: show_victory_spoils  #--------------------------------------------------------------------------  def show_victory_spoils(gold, drops)    @victory_exp_window_back.hide    @victory_exp_window_front.hide    @victory_level_window.hide    @victory_level_skills.hide    #---    text = YEA::VICTORY_AFTERMATH::TOP_SPOILS    @victory_title_window.refresh(text)    #---    @victory_spoils_window.show    @victory_spoils_window.make(gold, drops)  end    #--------------------------------------------------------------------------  # new method: close_victory_windows  #--------------------------------------------------------------------------  def close_victory_windows    @victory_title_window.close    @victory_exp_window_back.close    @victory_exp_window_front.close    @victory_level_window.close    @victory_level_skills.close    @victory_spoils_window.close    wait(16)  end  end # Scene_Battle#==============================================================================# # �� End of File# #============================================================================== 
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
@Mushinronja: WinRAR does the trick pretty well. The free version will work even after the trial period is up, it will just bring up a reminder pop-up every time you use it after the trial expires. As for why I don't use .zip, for some reason the ability to make .zip files stopped working on this computer.

@Trihan: Thanks! I actually wrote something similar for mine though, so it is fixed. Though there are many with this issue it seems, maybe one of us should post our fix on the boards?
 

Mushinronja

Veteran
Veteran
Joined
May 12, 2014
Messages
87
Reaction score
30
First Language
English
Primarily Uses
Looked up Winrar, but didn't see a free trial so I thought they finally noticed that gaping hole in their system, lol. I'll look into it again soon
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Last edited by a moderator:

Mushinronja

Veteran
Veteran
Joined
May 12, 2014
Messages
87
Reaction score
30
First Language
English
Primarily Uses
Beat the demo, liked the game. Took some notes down as I was playing.

- As I'm a weirdo, I set it so I hold shift to dash, and as such I would skip dialogue occasionally. Mostly my fault, lol.

- Some enemy attacks don't have animations, which is weird to me. the beginning slimes didn't, and neither did those horrible bird things that do blind to everybody all day.

- Talia's regular attack had some annoying extra frames to the animation, but that's a very minor issue
- Talia's Rock Tosser says she's using freeze ray

- Romancing Talia all day

- The challenge enemies were all decent challenges, tho some moves are stand out as being way worse than anything else they can do. I thought the necromancer in the big house was a meant-to-lose fight due to this one all-hitting fog move it did, but every other attack wasn't that bad and it was beatable. Dunno if I think that's a bad thing, but I noticed it.

- When talking about training Alex in magic, Sarah says a line and the dialogue seems like it should be fixed to say "no cheering us on" very vague, but I didn't wanna write the whole thing down, lol.

- Checking Josie's door again after clearing the tower out the first time says to let her sleep, when she's in your party.

- Activating the closet doors from the sides (in the magi tower room hallways) make them open up, so they need to be direction fix'd

- The ladder to the 5th floor put me in the fire room when I was going up to the Wendigo, when before it put me under the pot, I believe. also, the maze in the mind section or w/e wasn't there when I went into the 5th floor before having to go up there to fight the wendigo.

- Those birds suck, btw

- Wow Chomp hurts

- Game Over screen is off-center

- Tanyl was pretty damn tough.
All in all, I liked the game quite a bit. Cedric's a weirdo and he's my least favorite character, but aside from that I like most everybody, lol. Each of the characters were useful for different reasons in battle, though I never used Sarah's thief skills, and only rarely used the other character's non-magic skills except for Josie's amazing cheers.

Lots of character interaction was nice, occasionally somewhat generic, but all good. Don't know what else to say, lol. Was a fun time.
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Thanks! Notes in spoiler below:

I do have some animations off to speed up the game (the slimes and birds specifically). I hope to (someday) get an animation made, but animations are low priority at the moment. Been starting to play around with the animation editor and cutting frames from some of the animations that are too long, hope to get more experienced at it later.

I'll check into those couple of errors you spotted. Probably slipped in when I fixed the previous 65 bugs. What is that saying, fix one and add three more?

Closet from the sides? I didn't think that was possible. I'll look at it more and see what is going on there.

The Necromancer is meant to be pretty easy to win if you use the Holy Water. I may have to check on him and make sure he is still pretty tough and not too random if you don't.

Chomp is not meant to be winnable yet. I plan to balance that fight out in Chapter 4 once I get that far in the game. For now I just put some hard skills in the hope the player would get the idea. If you actually won that battle I'd love to know how!

Tanyl is still WIP in balance. I usually use Scatter to lose the cloud, then spam Hurl Rock all day due to the damage bonus Cedric's Earth magic has against him. I put in that side quest with the skeletons to (hopefully) help by giving you a powerful item that you can use, I might make that reward better if more people struggle.

I find that I use the magic skills more too so far. The thief skills help more when the enemies get more powerful, as they can weaken them with a debuff. Cheers are pretty powerful, they are meant to be balanced by how squishy the cheerleader is compared to the other classes. Might still need some balance later on to avoid them becoming too OP, but Josie is meant to be the most powerful character in Chapter 1.

Glad you liked the characters (mostly). Cedric's been the hardest one for me to write, and I find that as the game has moved on I've toned him down a little. I will probably have to go back over Chapter 1 and edit his lines some later on.
Thanks again for playing it! I don't know when the full game will become available, my target is 2017, though I would love to have it done by sometime in 2016 if possible.
 
Last edited by a moderator:

Mushinronja

Veteran
Veteran
Joined
May 12, 2014
Messages
87
Reaction score
30
First Language
English
Primarily Uses
Yea, the storage rooms inbetween the long hallways and inbetween the bathrooms or w/e they are.

Holy Water? didn't realize I had one. I rarely use attack items in games, lol. Only times I used them in my playthrough were against the Wendigo's posse and against the big rat since Liana just specifically told me to, lol.

Yea, I get that chomp is unbeatable now, and I should have saved before fighting him the first time... didn't proc Liana's warning the first time I saw it since I went around, and thought it was just like the other tougher enemies. Was all on me. Also, if there was something behind that endless undead pit, I didn't find it because I was too weak for that ish, lol.

Tanyl was toughest when he'd hit everybody twice or hit a single person 4 times. Instead of having Cedric attack, most of the time I had him cast rock barrier on the whole team, taunt, and then just eat until the rest of the team could kill Tanyl. It seemed like everybody except Cedric became resistant to lightning for some reason during the fight, too. Was that a result of the shock cloud or sumthin? Either way, it helped out.

Cedric's alright, but it's probably just personal preference that I dislike his shtick. Eats a bunch, flirts with people like a creeper, etc. It might be that I also think he looks kinda weird. But that's a personal thing too, lol.

 
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Yeah, you had one, if you searched the crate before the battle with the Necromancer. Otherwise hopefully Liana's potion stock served you well. I figured it made no sense to have you start with nothing if she is the middle daughter of a wealthy potion making family after all!

Hmm...maybe I do need to add that warning about Chomp to the other side now that you bring it up. Will look into that. The endless undead is meant for a place to grind (if you feel you need it for any reason), nothing more. However, I figure it will be a Chapter 3 player who does that, as the party does return here in Chapter 3.

Sarah is supposed to be resistant to Lighting, but no one else is. However, if you do leave the Shocking Cloud up, it does block 25% of all electrical damage, so that is probably what you noticed. Guess I need to update my suggested strategy now, as I forgot about that part of it.

Cedric's meant to be a guy who is after food and women, and understands only the first. The plan is he is supposed to grow up as the game moves along, slowly. In short, he's flawed. All of them are though, just his shows more than the others right now. I'm sure I'll need to edit some of the lines when the game is done though so will make a note of your comments for when that time comes around!
 

Mushinronja

Veteran
Veteran
Joined
May 12, 2014
Messages
87
Reaction score
30
First Language
English
Primarily Uses
Well I mean his character's fine with that premise, it's just personal preference that makes me dislike him, lol. He's pretty great in battle though.


Well, trying to eat a very human-looking Wendigo and crazily chopping it up after beating it was a little off-putting, but maybe that's part of a not-yet-seen side of his character where he's actually an incredibly crazy guy and the food and women are all that can keep it at bay, lol.
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Yeah, That eat line probably didn't make sense after his berserker rampage to protect Liana. I'll axe it in the next update (I've already cut some of Sarah's lines that no longer make sense in Chapter 1, so it won't be the only update). Besides, he gets to pull that eat line in another area where it makes much more sense (and is funnier too) much later in the game, so I'll see what else I can put there after the Wendigo battle. Thanks for putting the thought in my head though!
 
Last edited by a moderator:

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Quick progress report update:

-Chapter 3 is done now, except for the ending cutscene.

-Some edits have been made in the scripts to fix little quirks in the game. Previously, if you swapped out a party member who was blinded and had 5 turns to go before the state disappeared, they were still blinded and had 5 turns to go before the state disappeared if you swapped them back in 4 turns later. That has now been fixed, and the time remaining on all states accurately updates for those in the reserves to account for the time passed.

-There is one new screenshot in the progress part of the front page. It replaces one screenshot that is no longer in the game.

-HP and MP have now been balanced across the 14 classes in the game world. This will result in some pretty major changes in how much HP and MP your party members have now in the demo when the next version posts.

That's it for now. Until next update!
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Small update on the project:

-Chapter 4 is almost done. At this point in time you can play the game up to the 2nd to last boss of Chapter 4. Side routes for the chapter have not been implemented yet, that is coming next.

-There has been a major rebalancing act done with all the items and armors. Now there is a significant jump from the first to the second weapon in the game, to simulate the jump from a training weapon to a real weapon. The cost has been increased to reflect this though, so save your DB's!

That's about all to report. Development is still on target to have the game finished by sometime in 2016.
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Got a video to go with this update, in this you can see me run through the town of Tir Koraz. You will also notice there is quite a jump up in ATK/MAT on Dwarfen quality weapons, as this is the first significant increase in stats you will see in the game.

Video below:

On other progress notes. I've been drawing up the side towns for Chapter 4, as in that Chapter the world really opens up. Also we do have mouse support now in the game, though at the moment it is only working well in Chapter 4. I plan to add it to Chapter 1 before releasing the next version of the demo.

And finally, we have a new anti-lag script, Effectus. Lag should be a bad memory now in this game. Still testing to see if there are any issues with that script not playing nice with the others, but so far nothing has come up.

My hope is to update the demo to Version 1.03 sometime in the next month or two, with some of the new art and mouse support. Also, Chapter 4 should be done soon, making this game 44% done when that milestone is reached!
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
Short monthly update here: Spent August revising a few weak spots in Chapter 2 (and late Chapter 1). This means Chapter 4 progress was slowed down a hair, but I think the overall game is better. Plus, the game no longer has a massive plot hole in Chapter 2, which is a good thing.

Chapter 4 progress is still continuing slowly but surely. As that is the Chapter when the map opens up significantly (for example, you can now travel to 5 more towns than you could before), it is taking a while. But, as of this post 3 of the 5 towns in Chapter 4 are implemented, and you can get to your final destination via two routes now. And, the final dungeon is drawn for chapter 4, it just needs events added to it. Once that is done, it is onward to Chapter 5!

Also, a video to show one of the boss battles for Chapter 4. See what happens when you encounter a shadow for the first time. Warning, they are nimble, meaning early on they will usually go before the party does! Be advised some graphics are still placeholders (Savina's faceset still needs to be ordered for example, though Zoe's has arrived now!).

 
Last edited by a moderator:

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,221
Reaction score
13,752
First Language
English
Primarily Uses
RMVXA
A quick update for September:

-First, Chapter 4 is finally done. You can now play the game all the way through the chapter, and even through the first town of Chapter 5.

-Secondly, the bug that made Alex's magic show up before the plot reveal has finally been fixed, thanks to Sixth. You now won't have it spoiled early.

-And thirdly, I updated a couple of the screenshots on the front page. There is a new one for the demo, and I replaced a couple of the progress screenshots with a couple new ones.

Right now my focus is on polishing some of the towns in the first four chapters, and on slow work for Chapter 5. ETA for Chapter 5 is late November/early December, if all goes well.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Don't mind me, just installing a fog machine. :LZSwink:


I can't stop looping this BGM while at work since I began to play PSO2. It just too good for mood booster.
How to post a picture there in the status feed?
So I was at the grocery store trying to reach for some small garbage bags on the top shelf way in the back. Instead of going all the way downstairs to find someone to help me I grabbed a broom and pulled it down. Putting the broom back I said, "Thank you for your service".
S.O.S.--10:16pm......two toddlers still awake....send help...

Forum statistics

Threads
100,423
Messages
975,688
Members
132,080
Latest member
Garycomehome
Top