Jump to content
LucidK

Extensive Magic System -- Paying if Needed

Recommended Posts

I know I can create the menu you are asking for and I can have that done by tomorrow but the core mechanics are gonna take some thought and lots and lots of coding

thanks for your input and I'm currently working on the graphics for the menu I know what you want trust me :D

Share this post


Link to post
Share on other sites

can't wait to see this ish

did you mean the graphics that I made for the basic structure or the script itself?

 

cuz these are the graphics

 

 

 

These images will create the bulk of the menu(other than the command window)

CrystogenesisTitle_zps97a2dadc.png

Crystogenesislv1_zps3fc9cfa0.jpg

 

Heres the fire shards

 

 

Fire_lv_one_slot_one_zps6ac3f578.png

Fire_lv_one_slot_three_zpsa50adcb6.png

Fire_lv_one_slot_two_zps3b192397.png

 

 

 

Heres the water Shards

 

 

Water_lv_one_slot_one_zps09ca8c0a.png

Water_lv_one_slot_three_zps86219777.png

Water_lv_one_slot_two_zpsda8de3ee.png

 

 

 

Heres the Earth Shards

 

 

Earth_lv_one_slot_one_zpsbbde9057.png

Earth_lv_one_slot_three_zps5c1ce46a.png

Earth_lv_one_slot_two_zps7e94b8fe.png

 

 

 

CrystogenesisMain_zps5f86cd96.jpg

this is just the Lv 1 version of the system

 

 

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

This is splendid. I'm very glad to see some progress on this. I sincerely appreciate your work Owl

  • Like 1

Share this post


Link to post
Share on other sites

Yet another Huge graphics update!

Light and Dark shards

 

 

Darkshards_zps1cdf2159.jpg

Lightshards_zpsefca9253.png

 

 

 

and a complete LV 2!

 

Crystogenesislv2_zpsa98c4979.png

CrystogenesisMainlv2_zps8ed3e2a2.jpg

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

I didn't measure the dimensions of those shards but you can rotate them and they'll fit in each slot right?

That would save you from having to draw n copies of it when you can just rotate it.

Share this post


Link to post
Share on other sites

well 1 I'm a novice and I havn't learned how to rotate an image with ruby

and 2 they aren't perfect so probably not...

 

ummm.... tsuki do you want to help me with this script I need professional help...

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

ok then how about answering a few questions...

 

 

CrystogenesisMainlv2_zps8ed3e2a2.jpg

 

 

 

based on this image I need a menu on the left that has a command list:

 

Insert Crystals

Remove Crystals

 

then if you select insert crystals a slot window pops up under the command list then you select a slot to put a crystal into, then I need a small Item window to

pop up under that displaying only Crystal shards that the player finds(made in the database, and note-tagged what type of shard it is.)

then depending on what type of shard you "equip in that slot" the coresponding image of that shard in that slot is displayed...

 

if I can get this achieved I think this system will work...

 

I've copied the entirety of the equip menu scripts (excluding the status window which isn't needed)

how would I rewrite it so that I can achieve what I stated above (I basically want to remove anything that has to do with the actors equips, and make a kind second equip screen for the shards...)

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

Whaa Tsuki, you gotta own scripting. You gotta make this script your bitch. You gotta punch this script right in its teeth. You think this is a big script? WTF is a big script? You eat lines of code for breakfast. You don't let length get in the way of success. You take the length of this script, times it by two, and thats the measurement of your manhood, then you slap this script in the face with it while shooting demo-filled lasers from your eyeballs of this piece of work. Small? What's small? Large? What is that? You only know "Accomplishment" and that's it when trying to describe a script you could do.

 

...but if your too busy to help out Owl, s'all good too. Your list of already made scripts rocks enough to sit this one out :P

Edited by polidoro

Share this post


Link to post
Share on other sites

Here's what I have so far

 

 

 

WhatIgotsofar_zpsd89d3617.png

 

 

 

 

Script(not done at all...):

 

 


 

module Reactive

module Crystal_RCMS

 

 

RCMS_MUSIC = true

RCMS_MUSIC_NAME = "Forgotten Kingdom"

 

 

CRYSTOGENESIS_MAIN = "Crystogenesis Title"

 

 

 

end

module Reactive_Crystogenesis_mech

=begin

# Shard Checking (Don't worry about these, these are just thoughts)

 

# Fire Shard?

class RPG::Item

def fire_shard?

if @fire_shard.nil?

if @note =~ /<ELEM_FIRE>/

@fire_shard += 1

else

@fire_shard = 0

end

end

@fire_shard

end

 

end

 

 

FIRE_SHARDS = @fire_shard

 

 

# Water Shard?

class RPG::Item

def water_shard?

if @water_shard.nil?

if @note =~ /<ELEM_WATER>/

@water_shard += 1

else

@water_shard = 0

end

end

@water_shard

end

 

end

 

 

WATER_SHARDS = @water_shard

 

 

class RPG::Item

def earth_shard?

if @earth_shard.nil?

if @note =~ /<ELEM_EARTH>/

@earth_shard += 1

else

@earth_shard = 0

end

end

@earth_shard

end

 

end

 

 

EARTH_SHARDS = @earth_shard

 

end

end

=end

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

# Heres the command compilation

 

class Window_Main_RCMSCommand < Window_Command

@@last_command_symbol = nil

 

 

# * Object Initialization

 

def initialize

super(0, 100)

select_last

end

 

# * Get Window Width

 

def window_width

return 160

end

 

# * Get Number of Lines to Show

 

def visible_line_number

item_max

end

 

 

# * Create Command List

 

def make_command_list

add_command("Insert Shards", :insert_shards)

add_command("Remove Shards", :remove_shards)

add_command(Vocab::clear, :clear)

end

 

# * Processing When OK Button Is Pressed

 

def process_ok

@@last_command_symbol = current_symbol

super

end

 

# * Restore Previous Selection Position

 

def select_last

select_symbol(@@last_command_symbol)

end

 

end

 

 

 

 

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

class Window_Insert_RCMSCommand < Window_Command

include Reactive::Reactive_Crystogenesis_mech

@@last_command_symbol = nil

 

 

# * Object Initialization

 

def initialize

super(0, 100)

select_last

end

 

# * Get Window Width

 

def window_width

return 160

end

 

# * Get Number of Lines to Show

 

def visible_line_number

item_max

end

 

 

# * Create Command List

 

def make_command_list

unless FIRE_SHARDS >= 1

add_command("Fire Shards", :fire_shards)

end

unless WATER_SHARDS >= 1

add_command("Water Shards", :water_shards)

end

unless EARTH_SHARDS >=1

add_command("Earth Shards", :earth_shards)

end

end

 

# * Processing When OK Button Is Pressed

 

def process_ok

@@last_command_symbol = current_symbol

super

end

 

# * Restore Previous Selection Position

 

def select_last

select_symbol(@@last_command_symbol)

end

 

end

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

class Window_Insert_Slot < Window_Selectable

def initialize(x, y, width)

super(x, y, width, window_height)

@actor = nil

refresh

end

#--------------------------------------------------------------------------

# * Get Window Height

#--------------------------------------------------------------------------

def window_height

fitting_height(visible_line_number)

end

#--------------------------------------------------------------------------

# * Get Number of Lines to Show

#--------------------------------------------------------------------------

def visible_line_number

return 3

end

#--------------------------------------------------------------------------

# * Frame Update

#--------------------------------------------------------------------------

def update

super

@item_window.slot_id = index if @item_window

end

#--------------------------------------------------------------------------

# * Get Number of Items

#--------------------------------------------------------------------------

def item_max

@actor ? @actor.equip_slots.size : 0

end

#--------------------------------------------------------------------------

# * Get Item

#--------------------------------------------------------------------------

def item

@actor ? @actor.equips[index] : nil

end

#--------------------------------------------------------------------------

# * Draw Item

#--------------------------------------------------------------------------

def draw_item(index)

return unless @actor

rect = item_rect_for_text(index)

change_color(system_color, enable?(index))

draw_text(rect.x, rect.y, 92, line_height, slot_name(index))

draw_item_name("Empty Slot", rect.x + 92, rect.y, enable?(index))

end

#--------------------------------------------------------------------------

# * Get Equipment Slot Name

#--------------------------------------------------------------------------

def slot_name(slot_name)

slot_name = "Empty Slot"

end

#--------------------------------------------------------------------------

# * Display Equipment Slot in Enabled State?

#--------------------------------------------------------------------------

def enable?(index)

return true

end

#--------------------------------------------------------------------------

# * Get Activation State of Selection Item

#--------------------------------------------------------------------------

def current_item_enabled?

enable?(index)

end

end

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

# Here I created my own menu base

 

class Scene_RCMS_MenuBase < Scene_Base

 

# * Start Processing

 

def start

super

create_background

 

end

 

# * Termination Processing

 

def terminate

super

dispose_background

end

 

# * Free Background

 

def dispose_background

# @background_sprite.dispose

end

 

end

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

class Scene_RCMS_Insert_Menu < Scene_RCMS_MenuBase

include Reactive::Crystal_RCMS

 

# * Start Processing

 

def start

create_command_window

create_slot_window

create_background

 

end

 

def create_background

@background_sprite = Sprite.new

@background_sprite.bitmap = Cache.load_bitmap("Graphics/System/",CRYSTOGENESIS_MAIN)

@background_sprite.z = -10

 

@orb = Sprite.new

@orb.bitmap = Cache.load_bitmap("Graphics/System/","Crystogenesis lv 1")

@orb.z = -9

end

 

def create_command_window

@rc_command_window = Window_Main_RCMSCommand.new

@viewport = Viewport.new

@rc_command_window.set_handler(:fire_shards, method(:fire_shards))

@rc_command_window.set_handler(:water_shards, method(:water_shards))

@rc_command_window.set_handler(:earth_shards, method(:earth_shards))

@rc_command_window.set_handler(:cancel, method(:return_scene))

end

 

# * Create Slot Window

 

def create_slot_window

wx = 0

wy = @rc_command_window.y + @rc_command_window.height

ww = 160

@slot_window = Window_EquipSlot.new(wx, wy, ww)

@slot_window.viewport = @viewport

@slot_window.set_handler(:ok, method(:on_slot_ok))

@slot_window.set_handler(:cancel, method(:on_slot_cancel))

end

 

#--------------------------------------------------------------------------

# * Slot [OK]

#--------------------------------------------------------------------------

def on_slot_ok

@item_window.activate

@item_window.select(0)

end

#--------------------------------------------------------------------------

# * Slot [Cancel]

#--------------------------------------------------------------------------

def on_slot_cancel

@slot_window.unselect

@command_window.activate

end

def fire_shards

@slot_window.activate

@slot_window.select(0)

end

 

def water_shards

@slot_window.activate

@slot_window.select(0)

end

 

def earth_shards

@slot_window.activate

@slot_window.select(0)

end

 

def return_scene

 

SceneManager.return

 

end

end

 

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

# Here RCMS MAIN menu (not done yet but should run)

 

class Scene_RCMS_Menu < Scene_RCMS_MenuBase

include Reactive::Crystal_RCMS

 

def start

if RCMS_MUSIC == true and @marker == nil

BattleManager::save_bgm_and_bgs

RPG::BGM.fade(1000)

RPG::BGS.stop

RPG::BGM.new(RCMS_MUSIC_NAME).play

@marker = 1

end

create_background

create_command_window

 

end

 

def create_background

@background_sprite = Sprite.new

@background_sprite.bitmap = Cache.load_bitmap("Graphics/System/",CRYSTOGENESIS_MAIN)

@background_sprite.z = -10

end

 

# * Create Command Window

 

def create_command_window

@rc_command_window = Window_Main_RCMSCommand.new

@viewport = Viewport.new

@rc_command_window.set_handler(:insert_shards, method(:insert_shards))

@rc_command_window.set_handler(:remove_shards, method(:remove_shards))

@rc_command_window.set_handler(:cancel, method(:return_scene))

end

 

 

def insert_shards

 

SceneManager.call(Scene_RCMS_Insert_Menu)

 

end

 

def remove_shards

end

def return_scene

@@music_enabled = RCMS_MUSIC

case @@music_enabled

when @@music_enabled = false

SceneManager.return

when @@music_enabled = true

@marker = nil

SceneManager.return

BattleManager::replay_bgm_and_bgs

end

end

end

 

 

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

That really depends on how you're actually managing the shards.

If they're treated as armors, then you just need to tell the `include?` method to only include shard armor types.

 

I would treat them as regular equips, using the same logic to equip and remove shards, rather than saying "is this a fire shard? Is this an ice shard?"

 

This allows you to use most of the existing logic. You just need to add some extra logic for the actual effects.

 

If you really want to work with shards, then define a new class of equips

 

class RPG::Shard < RPG::EquipItem

  attr_accessor :shard_type
  attr_accessor :shard_level
  def initialize
     @shard_type = ""
     @shard_level = 0
  end
end

class Game_BaseItem
  def is_shard?; @class == RPG::Shard; end
end

 

Then you just say

 

if item.is_a?(RPG::Shard)
  shard_type = item.shard_type
  shard_level = item.shard_level
  # do stuff
end

 

Since RPG::Shard is still an Equip, it can be equipped just like any other weapon/armor.

Edited by Tsukihime

Share this post


Link to post
Share on other sites

so how do I make a new equipment type called Crystal Shard

after I made a new armor type Crystal?

 

 

also:

 

How would I have a constant, CRYSTOGENESIS_LEVEL, vary from 1 to 6 based on the characters level

so like this

 

CRYSTOGENESIS_LEVEL = 1 if actor level <= 10

CRYSTOGENESIS_LEVEL = 2 if actor level <= 20

CRYSTOGENESIS_LEVEL = 3 if actor level <= 30

CRYSTOGENESIS_LEVEL = 4 if actor level <= 40

CRYSTOGENESIS_LEVEL = 5 if actor level <= 50

CRYSTOGENESIS_LEVEL = 6 if actor level <= 60

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

Owl, that is absolutely amazing thus far...

 

I cannot thank you enough for tackling this...

 

 

 

I don't know if it's possible, but I do think it's notable to say that I am hoping this script will allow for an orb for each party member. Not sure if that has been taken into consideration.

Share this post


Link to post
Share on other sites

with the way that tsuki described it'll be just like equipment(so for each character)

 

ok now here is my progress thus far

 

 

 

WhatIgotsofar_zps3dedf22d.png

 

 

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

I don't know if it's possible, but I do think it's notable to say that I am hoping this script will allow for an orb for each party member. Not sure if that has been taken into consideration.

 

Just imagine a second set of equipment for each actor except it's full of shards.

 

so how do I make a new equipment type called Crystal Shard

after I made a new armor type Crystal?

 

Just go to the terms tab in the database and ask the user to enter a new armor type called "shard".

Then when you are processing your equipment whenever it is armor type == "shard" then treat it as a shard.

 

also:

 

How would I have a constant, CRYSTOGENESIS_LEVEL, vary from 1 to 6 based on the characters level

so like this

 

CRYSTOGENESIS_LEVEL = 1 if actor level <= 10

CRYSTOGENESIS_LEVEL = 2 if actor level <= 20

CRYSTOGENESIS_LEVEL = 3 if actor level <= 30

CRYSTOGENESIS_LEVEL = 4 if actor level <= 40

CRYSTOGENESIS_LEVEL = 5 if actor level <= 50

CRYSTOGENESIS_LEVEL = 6 if actor level <= 60

 

You don't.

Constants are constant; they're called constants for a reason.

 

Just store it as an instance variable, or just say

 

def cryo_level
  if @level <= 10
     return 1
  elsif @level <= 20
     return 2
  ...

Edited by Tsukihime

Share this post


Link to post
Share on other sites

it says undefined method <=

 


 

@Crystal_level = 0

case @level

when @level <= 10

@Crystal_level = 1

when @level > 10

@Crystal_level = 2

when @level > 20

@Crystal_level = 2

end

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

so how do I check to see what it is?

 

also how to I make a new etype to set the slots in the menu to be that type?

and then where do I set their names?? 0.o

Edited by Reactive Owl

Share this post


Link to post
Share on other sites

These questions are getting close to asking Tsuki to write it for you :P

Maybe take a look at Yanfly's equipment script to see how he's done it?

Share this post


Link to post
Share on other sites

ok then all I need to know is how to check an actors level I know its an instance variable @level

I have this


 

def crystal_level?

if @level <= 10

return 1

end

if @level <= 20

return 2

end

if @level <= 30

return 3

end

 

 

 

And I use it here:


 

def create_background

@background_sprite = Sprite.new

@background_sprite.bitmap = Cache.load_bitmap("Graphics/System/",CRYSTOGENESIS_MAIN)

@background_sprite.z = -10

 

@crystal_level = crystal_level?

if @crystal_level = 1

@orb = Sprite.new

@orb.bitmap = Cache.load_bitmap("Graphics/System/","Crystogenesis lv 1")

@orb.z = -9

elsif @crystal_level = 2

@orb = Sprite.new

@orb.bitmap = Cache.load_bitmap("Graphics/System/","Crystogenesis lv 2")

@orb.z = -9

end

end

 

getting an undefined method error for "<=" how could less than or equal to not be defined already?

Edited by Reactive Owl

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted