[Mod Utility] Buff Builder Version 1.0 for Rebellion 1.82

A Buff Chain IDE

https://code.google.com/p/buff-builder/source/browse/

Yes, i finally did it.  After years of complaining that someone should do it, I went ahead and did it myself.

Summary: An IDE for modding Sins with the express purpose that no modder ever need dirty their hands in the actual ability and buff files again.  The IDE takes care of the messiness of the syntax and leaves the modder free to focus on the logic of the buff chain.

 

Documentation available on Google Drive 

 

Future Release Goals:

  • group select features
  • invoke ConvertData.exe during import/export
  • logic gate stamps

If they make Sins II with the same mod system:

  • Make it into a general-purpose entity editor

 

The code for this project can be found on Google Code.

Specifically, the compiled release version can be found on the Google Code repo as:

trunk/buff-builder/VoltBuffBuilder/BuffBuilderGUI/deploy/BuffBuilder.jar

For those that are lazy, here is a direct link: download version 1.0

Please note that you will need Java to run this.

129,746 views 23 replies | Pinned
Reply #1 Top

Woa! :grin:

Reply #2 Top

I am assuming this will allow us to build a buff and test it out of game? Would be nice.

Reply #3 Top

Ditto!

Reply #4 Top

Ultimately, the idea is that it will be able to perform much of work required with making buff chains.  You simply fill out the properties and it takes care of the rest, prompting you with what to put where and when.

Currently, all Abilities and Buffs spawn with default properties as I have not bothered messing with I/O yet and won't for a long time.  The majority of the work on this will be in the form of what I'm calling Pluggables.  These are the conditional parts of an entity file that only appear if you gave some value previously.  Basically, I have to rebuild the buff system from scratch in here and it's going to take a while.  Some Pluggables have sub-Pluggables, others have properties, and others have no properties.

After I finish accounting for all Pluggables, the only thing remaining (aside from what I'll mention below...) for a base release would be I/O.  Eventually, things like premade logic gates would added.  I also plan to add more elaborate selection systems (shift+click, rectangle select, etc) along the line as well.

 

Also... if someone could write a java class that draws a line between two JComponents and maintains that connection even when the JComponents are dragged around the screen, I would be very grateful...   :sick:

 

EDIT: new picture of progress

Reply #5 Top

I now have a line-drawing class but am running into difficulties getting the darn things to repaint.

Reply #6 Top

Quoting Volt_Cruelerz, reply 4
Also... if someone could write a java class that draws a line between two JComponents and maintains that connection even when the JComponents are dragged around the screen, I would be very grateful..

What framework are you using? Surely that has to be in Swing or one of the other libraries.

Reply #7 Top

Swing. I'm trying to call the repaint method from the mouse dragged event so that the arrows will line up, but they stubbornly refuse to exist even in the first place.

 

Edit: I rewrote part of it and I think I know how to fix it now.

Reply #8 Top

Line drawing now functions as intended.

Updated OP with new picture.  The OP also now has a link to the source.

Reply #9 Top

Massively overhauled the way that pluggables work.  The visual difference is small, but in terms of how it works, the difference is very large.  This will make them both more usable and IMO look nicer.  Down the line, it will also make adding new pluggables faster.

The next steps will be to finish support for the other sorts of pluggables, change the output lines to be drawn from the new output ports (those new colored blocks on the right sides of panels), and make pluggable blocks have more useful titles

Reply #10 Top

Wow!  Great work.

Reply #11 Top

The thing is, at this point, the only thing left to do (before handling i/o) is just to hook the darn thing up to the plethora of actions in the game which is easy enough, but incredibly time consuming and I'm building a computer at this point, so I have more interesting ways to spend my time than copy+paste a few hundred times.  

 

HELP ON THIS WOULD BE VERY MUCH APPRECIATED!

Reply #12 Top

Now that my new computer has been put together, I've been able to get back to this.

After spending more or less the entire Saturday on it, I've made some major progress!

Most critically, I now have InstantActions up and running and can export abilities.  Bear in mind that it's not yet idiot proof or capable of saving your work or even of exporting more than once per session.  The point is though, it exports successfully and those ability exports can in fact be loaded by the game  :grin:

I hereby present to you the first Ability generated by the export system and successfully loaded into the game:

TXT

entityType "Ability"
buffInstantActionType "DoInterrupt"
instantActionTriggerType "OnDelay"
delayTime 0.500000
needsToFaceTarget TRUE
canCollideWithTarget FALSE
moveThruTarget FALSE
isUltimateAbility FALSE
maxNumLevels 0
levelSourceType "FixedLevel0"
aiUseTime "Anytime"
aiUseTargetCondition "Any"
isAutoCastAvailable FALSE
isAutoCastOnByDefault FALSE
pickRandomPlanetToExploreForAutoCastTarget FALSE
ignoreNonCombatShipsForAutoCastTarget FALSE
onlyAutoCastWhenDamageTakenExceedsPerc 0.000000
useCostType "AntiMatter"
antiMatterCost
Level:0 0.000000
Level:1 0.000000
Level:2 0.000000
Level:3 0.000000
cooldownTime
Level:0 0.000000
Level:1 0.000000
Level:2 0.000000
Level:3 0.000000
orderAcknowledgementType "ONGENERALORDERISSUED"
researchPrerequisites
NumResearchPrerequisites 0
RequiredFactionNameID ""
RequiredCompletedResearchSubjects 0
nameStringID ""
descStringID ""
hudIcon ""
smallHudIcon ""
infoCardIcon ""

For the record, all of those fields could have been set to more interesting things, but due to my laziness, I just left them as what my program sets as the default.

Reply #13 Top

Release 0.2!!!

All pluggables integrated.  I make no guarantees regarding lack of bugs with that.  I'll need help finding all of them.

At this point, the program can export both buffs and abilities as well as all pluggables for either.  In other words, you can now use it just as you would if you were manually creating things.  It is not yet fool-proof nor is it capable of saving a buff chain to reload later, but so long as you don't close it, you'll be able to continue working on it without ever having to touch the entity files themselves :D

Reply #14 Top

You know, I'm actually kinda surprised that there have been no other comments by others for a while...

Regardless, release 0.3 is live.  Import and export are live.  Never again should anyone have to touch an ability or buff file!  I intend to do more, but the point is, with this release, editing with Notepad++ is now obsolete!

Next order of business will be making it invoke ConvertData when importing and exporting.  Then I'll work on saving at the project level.  Following that comes idiot proofing.  Last comes documentation.

Reply #15 Top

I'm keeping track.  I just haven't had much of a need for it yet. :P

Reply #16 Top

Well, at least someone is paying attention :P

 

Anyways, release 0.4 is out.  With this release comes numerous QOL improvements and most importantly, saving/loading at the project level.  Please bear in mind that saving/loading (and probably importing/exporting as well) a PeriodicAction can be semi-wonky at the moment and the InstantAction it invokes will not be preserved across saves.  This will be fixed in future versions.

ConvertData is proving to be a royal pain in the neck.  If anyone has any desire to help, please head over to the modders' help thread and take a look at my post there.

Aside from fixing PeriodicActions, the only thing left for the base release is making it so that the help is actually useful!  We're getting close!

Reply #17 Top

Release 1.0 is out!

For those following this thread, note that it does not yet support loading files that are already BIN'd.

I emailed Yarlen earlier about getting this stickied.  Hopefully he responds soon.

Reply #18 Top

Congratulations on the sticky!

Reply #19 Top

Too bad it's not an Eclipse plugin ;)

 

BTW, I tried running 1.0 and it gives a NumberFormatException with entityType "Ability" as the line in error. Tried against the games reference files too.

 

Reply #20 Top

@ZombiesRus5,

Now why have I never noticed the animated blood coming from your avatar's mouth before now?? :)

Reply #21 Top

Quoting ZombiesRus5, reply 19

Too bad it's not an Eclipse plugin ;)

 

BTW, I tried running 1.0 and it gives a NumberFormatException with entityType "Ability" as the line in error. Tried against the games reference files too.

 
Could you tell me a specific file you tried to open that gave that error?

Reply #22 Top

Disregard, I misunderstood your menu options.

Reply #23 Top

Quoting furyofthestars, reply 20

@ZombiesRus5,

Now why have I never noticed the animated blood coming from your avatar's mouth before now?? :)

I kept it subtle ;)