Preparation before heading into the wilds

Discuss IB/IBx engine ideas, bugs, etc.
cartons
Posts: 68
Joined: Mon Jan 11, 2021 5:38 pm

Preparation before heading into the wilds

Post by cartons »

Hey, after a bit of lurking and tinkering, I just wanted to say 'hello' (and 'help').

I've only heard about your project a few days ago, but it has me very excited! Seeing how you've been at it for the last ten years or so, you probably don't need convincing, but IB has the potential to be an awesome tool that scratches a very specific gaming itch that I don't see being addressed anywhere else. Please carry on!

So - Sorry if this isn't an appropriate place to ask:
I have both IB Basic and IB2 v197. Ruleset customization is important to me, but I have no coding experience outside of some *very* rudimentary Python (not so helpful in this environment). This leads me to lean towards IBB as it appears somewhat more approachable for someone like me.

I noticed 'Raventhal', which I assume was built in IBB, has customized elements, but I can't figure out how to reverse engineer the code (having no starting point), or how to get the module to 'speak' with any new bits of code I stitch together.

I played around a bit with IB197, and...like...say I wanted to create a new spell; for example; the spell data in the editor for 'Web' points to a piece of code: "spWeb"; I would love to look at the code to see how that script actually works, but I can't find it in any of the folders. The data.json file (again IBB's Raventhal) seems to create a repository of new elements, but no actual working out of mechanics.

The IB Builders Guide doesn't offer any clues to attempt that sort of customization, and fishing through the folders, the only reference to the Web spell I could find is this:
{
"name": "Web",
"tag": "web",
"spellImage": "sp_web",
"description": "Fills a 3x3 square area with sticky spiderweds.",
"useableInSituation": "InCombat",
"spriteFilename": "fx_web",
"spriteEndingFilename": "fx_web3x3end",
"spellStartSound": "buffer",
"spellEndSound": "buffer",
"costSP": 15,
"spellTargetType": "PointLocation",
"spellEffectType": "DeBuff",
"aoeRadius": 1,
"range": 4,
"spellScript": "spWeb"
},
which isn't any different from what I find in the IB Toolset, and points once again to the spellScript "spWeb".

I understand there's necessarily a high barrier to entry for this sort of thing, and that you all have lives, and that in, in addition to building this engine, you don't have time to hand hold every stranger who wanders by, but it would be helpful if someone could point to how the scripts work together, and hopefully I might be able to learn what I can from example (or copypasting).

Thank you, in any case, for the passion you put into this project.
cartons
Posts: 68
Joined: Mon Jan 11, 2021 5:38 pm

Re: Preparation before heading into the wilds

Post by cartons »

I've found an old version of IB (v100), that does actually have all of these components accessible in the data > scripts folder. Is it possible to access these in later versions? They don't seem to be hidden in v197.
cartons
Posts: 68
Joined: Mon Jan 11, 2021 5:38 pm

Re: Preparation before heading into the wilds

Post by cartons »

Ah...I found 'IceBlinkEngine-master' on GitHub which answers my question.

Lots of exciting looking scripts in there! Could anyone tell me how to incorporate them into the ToolSet?
User avatar
slowdive
Site Admin
Posts: 485
Joined: Wed Jan 15, 2020 4:37 am

Re: Preparation before heading into the wilds

Post by slowdive »

Welcome to the IB forums! We are slow indeed, but we like it that way :lol:

The current trick with spells in IB v197 and IBbasic v28 is that there are two parts, the spell part and the effect part. The part you posted is the spell part. Below is an excerpt from the "data.json" file found here for IBbasic:

https://github.com/slowdive-fan/IBbasic ... /data.json

For IBbasic, this "data.json" file can be placed in the module's folder and any data will be appended to the default "data.json" file (see inside the "Raventhal" folder for an example if you have already downloaded that module). To completely override the default "data.json" file, create a folder called "override" at the root directory (same directory that has "modules" and "saves") and place your version of "data.json" in there.

Spell part found under ""dataSpellsList": [" part of the "data.json" file and it points to "spellEffectTag": "web",:

Code: Select all

{
      "name": "Web",
      "tag": "web",
      "spellImage": "sp_web",
      "description": "Fills a 3x3 square area with sticky spiderweds.",
      "useableInSituation": "InCombat",
      "spriteFilename": "fx_web",
      "spriteEndingFilename": "fx_web3x3end",
      "spellStartSound": "buffer",
      "spellEndSound": "buffer",
      "costSP": 14,
      "spellTargetType": "PointLocation",
      "isUsedForCombatSquareEffect": false,
      "spellEffectType": "DeBuff",
      "aoeShape": "Circle",
      "aoeRadius": 2,
      "range": 4,
      "spellScript": "none",
      "spellEffectTag": "web",
      "spellEffectTagList": [],
      "removeEffectTagList": []
    },
Effect part of the "data.json" file under ""dataEffectsList": ["

Code: Select all

{
      "name": "Web",
      "tag": "web",
      "tagOfSender": "senderTag",
      "classLevelOfSender": 0,
      "description": "Web Effect",
      "spriteFilename": "fx_webbed",
      "durationInUnits": 18,
      "currentDurationInUnits": 0,
      "startingTimeInUnits": 0,
      "babModifier": 0,
      "babModifierForRangedAttack": 0,
      "damageModifierForMeleeAttack": 0,
      "damageModifierForRangedAttack": 0,
      "acModifier": 0,
      "isStackableEffect": false,
      "isStackableDuration": false,
      "usedForUpdateStats": false,
      "effectScript": "efGeneric",
      "saveCheckType": "none",
      "saveCheckDC": 10,
      "doDamage": false,
      "damType": "",
      "damNumOfDice": 0,
      "damDie": 0,
      "damAdder": 0,
      "damAttacksEveryNLevels": 0,
      "damAttacksAfterLevelN": 0,
      "damAttacksUpToNLevelsTotal": 0,
      "damNumberOfAttacks": 0,
      "damNumberOfAttacksForEveryNLevels": 0,
      "damNumberOfAttacksAfterLevelN": 0,
      "damNumberOfAttacksUpToNAttacksTotal": 0,
      "doHeal": false,
      "healHP": true,
      "healType": "",
      "healNumOfDice": 0,
      "healDie": 0,
      "healAdder": 0,
      "healActionsEveryNLevels": 0,
      "healActionsAfterLevelN": 0,
      "healActionsUpToNLevelsTotal": 0,
      "doBuff": false,
      "doDeBuff": true,
      "statusType": "Immobile",
      "modifyFortitude": 0,
      "modifyWill": 0,
      "modifyReflex": 0,
      "modifyStr": 0,
      "modifyDex": 0,
      "modifyInt": 0,
      "modifyCha": 0,
      "modifyCon": 0,
      "modifyWis": 0,
      "modifyLuk": 0,
      "modifyMoveDistance": 0,
      "modifyHpMax": 0,
      "modifySpMax": 0,
      "modifySp": 0,
      "modifyHpInCombat": 0,
      "modifySpInCombat": 0,
      "modifyDamageTypeResistanceAcid": 0,
      "modifyDamageTypeResistanceCold": 0,
      "modifyDamageTypeResistanceNormal": 0,
      "modifyDamageTypeResistanceElectricity": 0,
      "modifyDamageTypeResistanceFire": 0,
      "modifyDamageTypeResistanceMagic": 0,
      "modifyDamageTypeResistancePoison": 0,
      "modifyNumberOfMeleeAttacks": 0,
      "modifyNumberOfRangedAttacks": 0,
      "modifyNumberOfEnemiesAttackedOnCleave": 0,
      "modifyNumberOfEnemiesAttackedOnSweepAttack": 0,
      "useDexterityForMeleeAttackModifierIfGreaterThanStrength": false,
      "useDexterityForMeleeDamageModifierIfGreaterThanStrength": false,
      "negateAttackPenaltyForAdjacentEnemyWithRangedAttack": false,
      "useEvasion": false,
      "modifyShopBuyBackPrice": 0,
      "modifyShopSellPrice": 0
    },
We broke it up like this because sometimes a spell can cast the effect "web", but also an item or an event trigger could call the "web" effect.

Hope this helps and if not, just keep asking more questions :lol:

One tip would be to maybe start with IB and not IBbasic because IB has a more detailed and flexible toolset plus it has more users that are familiar with the IB toolset to help explain things. As you already found, the IB toolset has a Spell Editor and an Effect Editor found under the "Wizards/Editors" menu of the toolset (much easier than messing with json files directly). Newer modules like Hearkenwold will use the "spellEffectTagList" collection to list one or more effects that are used by the spell (think combinations of effects for one spell) or they may use the older "spellEffectTag" which only calls one effect for that spell.
cartons
Posts: 68
Joined: Mon Jan 11, 2021 5:38 pm

Re: Preparation before heading into the wilds

Post by cartons »

Thank you for the response. The way Spells and Effects interact is beginning to make more sense to me :)

I'm slowly going through youngneil1's old primer https://www.iceblinkengine.com/forums/v ... f=38&t=289, but I'm wondering if I'm not using the ideal version of IB to follow along; many of the Triggers he mentions are not present, and the ones that are do not show up in the right hand bar when clicked on.

ex:
The INFO button is selected. I left-click the 'jaden' sprite, but instead of showing me the 'jaden_108' trigger (which I know is there because right-click verifies), the TriggerEvents tab stays on newTrigger109, the last trigger created, and I can't get it to switch to any previously made triggers.

I'm using BBeta197. Is there a previous, hallmarked version of IB I should be using?
User avatar
slowdive
Site Admin
Posts: 485
Joined: Wed Jan 15, 2020 4:37 am

Re: Preparation before heading into the wilds

Post by slowdive »

I just tried opening toolset (v196) and created a new trigger on the homeds map. I then right clicked on the jaden prop and two context menu options show up. I then can click on the trigger tag and that switched from the new trigger to the jaden trigger in the trigger panel. If it doesn't seem to be working for you then there may have been a bug created in v197 (I don't have v197 readily available).

That quick start guide is very outdated. I think the "IB Builders Guide_v2.docx" is a more recent, but still old. It can be found in the root folder, the same folder that has the IceBlink2.exe and IBBToolset.exe.

Also, I did make some video tutorials for IBbasic that may be helpful, but are not directly the same as IB.
https://www.youtube.com/playlist?list=P ... 5iR63N8e26
cartons
Posts: 68
Joined: Mon Jan 11, 2021 5:38 pm

Re: Preparation before heading into the wilds

Post by cartons »

Thanks for the leads, I've gone through those videos, and they are informative.

I've downloaded Hearkenwold and will (after enjoying it) take it apart to get a sense of how to do the possible.
User avatar
Dorateen
Posts: 262
Joined: Thu Jan 16, 2020 3:03 pm

Re: Preparation before heading into the wilds

Post by Dorateen »

Just a mention on triggers and trigger properties. I have also noticed that sometimes clicking the info button and selecting a trigger, the information does not immediately show up. Clicking back on the screen, and then re-selecting the trigger seems to bring it up. Could be a display glitch, but it does not seem to prevent triggers from functioning.
User avatar
slowdive
Site Admin
Posts: 485
Joined: Wed Jan 15, 2020 4:37 am

Re: Preparation before heading into the wilds

Post by slowdive »

Hearkenwold for IB (not IBbasic) will definitely be a good resource as well as being an amazing module.
zach_holbrook
Posts: 83
Joined: Thu Jan 16, 2020 5:00 am

Re: Preparation before heading into the wilds

Post by zach_holbrook »

Hey there! I'm late to this thread, but I'd be happy to help answer any of your questions too. Welcome!
Post Reply