Jump to content
Mr. Bubble

Tactics Ogre PSP Crafting System

Recommended Posts

I'd love it if this script were compatible with XAS ACE. I have a feeling that the reason it won't work, is because XAS thinks it's trying to equip the item that is being crafted... But yeah. I've been trying to get this to work for ages, and I really hope you consider my request.

Share this post


Link to post
Share on other sites

That's... really strange. First, make sure you've tested the script with only XAS and the crafting script together. I need to make sure that it's not some other script you're using. That behavior is way too strange unless XAS modified the default classes that my script's classes inherits.

 

You also need to link to XAS.

Share this post


Link to post
Share on other sites

This is really neat crafting system, i really like it, but i have some suggestion. How about an option to craft a bunch of one item from one recepy, bor example i have one lead ingot, and from one lead ingot i can make 25 bullets. You know what i mean?

 

I've been thinking this, too. I like the idea of being able to make several of an item from one recipe. Granted, I don't use ammo, but there's similar things in my games. I actually used this in one of my games to make a cooking system. One of the ways I've gotten around this is making it where the ingredients make an item called "box of ____" which can then be used from the menu (with a common event attached) that removes the box and adds X amount of the item you want to have been crafted from the recipe. Granted, this is a round-about fix and an edit in the script to be able to just make X amount of something from one recipe would be nice, but it's not absolutely necessary to my enjoyment of the script. It's definitely more simplified than using Kread-EX's synthesis stuff for me, and easier than using yanfly's common event shop as a round-about synthesis screen.

Share this post


Link to post
Share on other sites

XAS can be found on moghunter's site right here. http://xasabs.wordpress.com/xas-vx-ace-v0-5-by-moghunter/

 

And I know for a fact that it's XAS due to how they redefined item use. I proved it by using Sapphire Active Battle System as a temp replacement to test, and found your script worked fine with that system.

 

In XAS, when you try to use an Item from the item menu, it isn't used like in most systems. It's equipped to the item menu for use on the field. I think that's the problem with this.

Share this post


Link to post
Share on other sites

XAS can be found on moghunter's site right here. http://xasabs.wordpr...5-by-moghunter/

 

And I know for a fact that it's XAS due to how they redefined item use. I proved it by using Sapphire Active Battle System as a temp replacement to test, and found your script worked fine with that system.

 

In XAS, when you try to use an Item from the item menu, it isn't used like in most systems. It's equipped to the item menu for use on the field. I think that's the problem with this.

 

I looked at it. I think he could've better handled how item equip checks are done, IMO. However, this turned out to be a simple patch.

 

 

 

Install it below XAS in the script editor.

Share this post


Link to post
Share on other sites

Not currently, but you could probably figure out a backdoor way, since the recipes are from books, you could simple have a forge and anvil remove the other books and then readd them when players exit the scene, like this.

conditional branch: player has item; 'granny's smithing'

play sound: 'Bell2'

change item - alchemy for nerds

change item - leather tanning for experts yo

change item - mad book of crazy SCIENCE!

wait 12 frames

script call: open_tocrafting_system

wait 12 frames

change item + alchemy for nerds

change item + leather tanning for experts yo

change item + mad book of crazy SCIENCE!

else

show text: "we must contruct additional pylons, no you just need a smithing book"

branch end

Hope this helps. Edited by Jacquerel(BizM)

Share this post


Link to post
Share on other sites

I was wondering if there was a way to open up two (or more) different shops. One for weapon and armor crafting and one for potions. Because it would be a little odd if you can use an alchemy station to create a warhammer. lol

 

No, not currently. I've had this feature request before, but I wasn't sure how I could implement it. Fortunately, I had a lightbulb moment just now. I'll be able to implement it, but only after I work on some other scripts.

Share this post


Link to post
Share on other sites

To BizM, no, sorry, that doesn't help. I won't know what books the player will have at the time since they are quest reward items or can be bought at a high price. If I remove these non-existant book, and add them when they have them, they get the books for free. Thanks anyway though!

 

To Mr. Bubble, take all the time you need. I'm still in the early stages of the game and I'm following this topic so I'll be watching for the update. Thanks for getting back to me!

Share this post


Link to post
Share on other sites
To BizM, no, sorry, that doesn't help. I won't know what books the player will have at the time since they are quest reward items or can be bought at a high price. If I remove these non-existant book, and add them when they have them, they get the books for free. Thanks anyway though!
I was going to say add conditional branches inside the condition to check if the player has those books or not, if they do, remove them, if not, do nothing.

 

So more like this.

conditional branch: player has item; 'granny's smithing'

play sound: 'Bell2'

conditional branch: player has item; 'alchemy for nerds'

change item - alchemy for nerds

control switch: removebook1 = on

else

<nothing>

branch end

conditional branch: player has item; 'leather tanning for experts yo'

change item - leather tanning for experts yo

control switch: removebook2 = on

else

<nothing>

branch end

conditional branch: player has item; 'mad book of crazy SCIENCE!'

change item - mad book of crazy SCIENCE!

control switch: removebook3 = on

else

<nothing>

branch end

wait 12 frames

script call: open_tocrafting_system

wait 12 frames

condition branch: switch removebook1 = on

change item + alchemy for nerds

else

<nothing>

branchend

condition branch: switch removebook2 = on

change item + leather tanning for experts yo

else

<nothing>

branchend

condition branch: switch removebook3 = on

change item + mad book of crazy SCIENCE!

else

<nothing>

branchend

else

show text: "we must construct additional pylons, no you just need a smithing book"

branch end

So what this will do is check if players have the recipe books, if the player does, it will turn on a switch assigned to that item, which will then be asked later if the player had it, and if so, will return it to their inventory, I hope thats easy enough to understand.

 

Once Mr Bubble updates the script you wont need this, ofcourse.

Edited by Jacquerel(BizM)

Share this post


Link to post
Share on other sites

Updated to 1.7. You can now choose which recipebooks can be included in the crafting scene by category labels.

 

I originally intended for this update to also include the ability to view item stats in the crafting scene, but I'm in the middle of a heatwave and I'm not in the mood to code in heat.

Share this post


Link to post
Share on other sites

Thats fine, Bubs. Living in a hot country town in Australia allows me to understand how brutal Heatwaves can be.

 

Honestly, I'm just happy a script like this exists, the only ones we had before was a crafting system from GO GO TOTORI (which is fine if you are looking for something more advanced) and an untranslated simple crafting script that didnt know what Notetags were.

 

Now to think of ways to incorporate these new features.

Share this post


Link to post
Share on other sites

The script has been updated to v1.8. There are many significant updates.

  • Compatibility: "YEA-AceMenuEngine" support added.
  • You can now view item details in the crafting scene if the script "Reader Functions for Features/Effects" is installed.
  • Info window style has changed.
  • Any amount of ingredients can now be displayed, not just 6.
  • Configuration module has many new settings.
  • Some method names have changed.
  • Removed a chunk of redundant code.
  • Efficiency update. (8/25/12)

Please let me know of any errors.

Share this post


Link to post
Share on other sites

Holy mackerel, thats so awesome!

 

Also, for some bizarre reason, this appears to be incompatible with SEE - Map Title, its weird in that a script of this caliber shouldnt effect it, I'd generally ask him to fix it, but he is rather difficult to contact, even with having him on Steam.

 

I commented out every script, and uncommenting his caused the error, I reactived all my scripts except that one, and it was fine, it happens when you try to enter the crafting scene, by both events and adding it into the menu scene.

 

The error returned is:

AClosterInspectionwrog.png

Its this line.

  #--------------------------------------------------------------------------
 # new method : recipebook?
 #--------------------------------------------------------------------------
 def recipebook?
return false unless self.is_a?(RPG::UsableItem) || self.is_a?(RPG::EquipItem)
   return !@recipe_list.empty? # <-- this one
 end
end # class RPG::BaseItem

This script of incompatiblity is in the spoiler.

#===============================================================================
# * SEE - Map Title Screen
# * By Crazyninjaguy
# * Requested by Bizarre_Monkey
# * Part of StormCross Engine Evolution
# * http://www.stormxstudios.co.uk
#===============================================================================
# * It'd be easier to copy the demo events, but if you're just getting the script
#   then use these commands in an event:
# SceneManager.scene.command_new_game
# SceneManager.scene.command_continue
# SceneManager.scene.command_shutdown
#===============================================================================

module SEE
 module Title
# The ID Of your Title Screen Map
START_MAP_ID = 23
# X Position of your character's starting position
START_X = 9
# Y Position of your character's starting position
START_Y = 12

# Game Title Name X Position
GAME_TITLE_X = 0
# Game Title Name Y Position
GAME_TITLE_Y = -180

# Display your game's logo? Set to true if yes.
DISPLAY_LOGO = false
# Logo filename, in Titles1 folder
LOGO_FILENAME = "Logo"
# X Position of the Logo image
LOGO_X = 0
# Y Position of the Logo image
LOGO_Y = 0
 end
end

class Scene_Title < Scene_Base
 include SEE::Title
 def start
super
SceneManager.clear
Graphics.freeze
DataManager.load_normal_database
DataManager.create_game_objects
$game_party.setup_starting_members
$game_map.setup(START_MAP_ID)
$game_player.moveto(START_X, START_Y)
$game_player.refresh
Graphics.frame_count = 0
$game_map.autoplay
create_map
@message_window = Window_Message.new
@scroll_text_window = Window_ScrollText.new
if DISPLAY_LOGO
  create_logo
end
 end
 def terminate
super
@spriteset.dispose
if DISPLAY_LOGO
  @logo.dispose
end
dispose_foreground
 end
 def update
super
$game_map.update(true)
$game_player.update
$game_timer.update
@spriteset.update
update_transfer_player unless scene_changing?
 end
 def create_map
@spriteset = Spriteset_Map.new
create_foreground
 end
 def create_logo
@logo = Sprite.new
@logo.bitmap = Cache.title1(LOGO_FILENAME)
@logo.x = LOGO_X
@logo.y = LOGO_Y
 end
 def command_new_game
DataManager.setup_new_game
fadeout_all
$game_map.autoplay
SceneManager.goto(Scene_Map)
 end
 def command_continue
SceneManager.call(Scene_Load)
 end
 def command_shutdown
fadeout_all
SceneManager.exit
 end
 def draw_game_title
@foreground_sprite.bitmap.font.size = 48
@foreground_sprite.bitmap.draw_text(GAME_TITLE_X, GAME_TITLE_Y, Graphics.width, Graphics.height, $data_system.game_title, 1)
 end
 def update_transfer_player
perform_transfer if $game_player.transfer?
 end
 def perform_transfer
pre_transfer
$game_player.perform_transfer
post_transfer
 end
 def pre_transfer
case $game_temp.fade_type
when 0
  fadeout(fadeout_speed)
when 1
  white_fadeout(fadeout_speed)
end
 end
 def post_transfer
case $game_temp.fade_type
when 0
  Graphics.wait(fadein_speed / 2)
  fadein(fadein_speed)
when 1
  Graphics.wait(fadein_speed / 2)
  white_fadein(fadein_speed)
end
 end
 def fade_loop(duration)
duration.times do |i|
  yield 255 * (i + 1) / duration
  update_basic
end
 end
 def fadein(duration)
@spriteset = Spriteset_Map.new
fade_loop(duration) {|v| Graphics.brightness = v }
 end
 def fadeout(duration)
fade_loop(duration) {|v| Graphics.brightness = 255 - v }
@spriteset.dispose
 end
 def white_fadein(duration)
@spriteset = Spriteset_Map.new
fade_loop(duration) {|v| @viewport.color.set(255, 255, 255, 255 - v) }
 end
 def white_fadeout(duration)
fade_loop(duration) {|v| @viewport.color.set(255, 255, 255, v) }
@spriteset.dispose
 end
 def transition_speed
return 15
 end
 def fadeout_speed
return 30
 end
 def fadein_speed
return 30
 end
end

Not asking you to make it compatible, I can make do without it, but if you wanted to, it means i dont have to post more than once, and you wont have to wait for my response.

Edited by Jacquerel(BizM)

Share this post


Link to post
Share on other sites

In CNG's script find this line:

 

DataManager.load_normal_database

 

Change it to:

 

DataManager.load_database

 

Let me know of any adverse effects. I did no testing other than seeing if it could load.

 

 

Edit: See, people? That's how you report an error. Solved it in 8 minutes.

Share this post


Link to post
Share on other sites

Hey Bubs, just wanted to let you know that thanks to you i finally can make a perfect alchemy system (: ... It works perfect for me until nao, also all of the stuff u put on this script make it so costumizable and versatile, thanks again Bubs.

 

Note: Sorry for my bad grammar.

Share this post


Link to post
Share on other sites

Awesome system. I might be able to pull something from Record of Agarest War Zero, due to this system. With that being said, however, is there a functionality, or in the future, could it be added, that upon the completion of crafting an item, that particular item/weapon/armor can be bought in the regular shop? That would make resource grinding largely easier.

Share this post


Link to post
Share on other sites

The update pile doesnt stop from getting taller. I dont think I've seen anyone add on to a script like this so fast and reliably, and each update is usually equipped with new features.

 

Will there be a v2.0?

There have been some good suggestions going around if you plan to make this a feature heavy update.

 

I have no need for it, but a lot of people have been asking for multiples of the same item to come out of a craft, like a log of wood and an iron ingot making 10 Iron Bolts, its a good idea. It would still be basic and simple, i'd recommend for the note tags you could simply have it so it would be an id and then x'n', 'n' would be a number which would be how many would be yielded.

 

For example:

<recipebook>

cover: RB3

item: 4, 5, 6, 7, 8, 9, 10, 11x3, 12x3, 14x5, 15x10

weapon: 5, 10

</recipebook>

This way it wouldnt mess up already made recipe books.

As for the items in question, they could be like this.

<ingredients>

item: 62

item: 49

</ingredients>

If this item was made x10, those are the ingredients that would make the amount, so they dont get multiplied. Basically item recipes would be the same. The script would just have to remember not to add an extra item for each amount of the thing made.

 

There's probably been a ton of other good suggestions floating around that wouldnt be deviating this from the simplicity that I desire it for.

 

Ofcourse, this one can be done with events, but it feels tacky, but can also bring out creativity.

 

Its up to you.

 

I had another idea/suggestion, this is an another addon which could be handy, welding down items into their base ingredients, could probably use salvage: array within a recipe book like so.

 

<recipebook>

cover: RB7

salvage: w4, w5, w6, a3, i14, a6

weapon: 4, 5, 6

armor: 1, 2, 3, 4, 5, 6

item: 14

</recipebook>

the last 3 arrays are the same as regular recipes, but the salvage: array is different, in its example, weapon id 4, 5 and 6 would be able to welded down into their base ingredients (same with armors 3 and 6, as well as item 14), so it would be a sort of reverse recipe, the ingredients for the item would be the same, except instead of losing them to make it, you'd be losing the item to get the ingredients.

 

This would be handy if a player found a steel polearm, but wanted a steel sword, he could weld down the pole arm to get steel ingots and some wood, which could then be utilized towards a steel sword.

 

I'm not in need of multiple item yields, but if you plan to do this, then its probably a thing which could be done along the way, I dunno.

Edited by Jacquerel(BizM)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×