One Step From Eden

One Step From Eden

Not enough ratings
Ethels modders crash course oh god everything is terrible
By Ethel
quick rundown of how to make mods including spells, artifacts, characters, and character loadouts
   
Award
Favorite
Favorited
Unfavorite
opening/TLDR/FAQ
  • there are example mods provided by the official dev in ...\One Step From Eden\OSFE_Data\StreamingAssets\ExampleMods

  • this is more in depth and i highly suggest using it, because this guide is ment more of a crash course to help understand how to use the above as a good reference

    What this guide will cover
  • we will be making a new weapon, artifact, and character loadout in this tutorial
  • we will not be covering icons although all you have to do is have a .png named whatever your item ID is called

  • TLDR
    • every file in the folder is loaded even if your mod doesnt 'use' it, this takes up memory remember that
    • you need to name your files properly for them to be added to the game
    • its best to re-launch the game if you remove tags from your artifact/spell then reload your mod, if you dont this can lead to some bugs that normally would not happen, computers can be funky wunky sometimes
    • SYNTAX, you didnt capitalize properly
    • WorkshopItemInfo.xml is NEEDED *assuming you plan to use the steam workshop
    • ItemData.txt also appears to be needed aleast to update your mod on the workshop, will change this if wrong

    FAQ
    where do i find artifact / spell / character data?
    ...\One Step From Eden\OSFE_Data\StreamingAssets\Data


    where are the sprites, animations, and all those things not in data located?
    ...\One Step From Eden\OSFE_Data\StreamingAssets\AssetBundles
    these are stored in a compressed format, you will need an asset budle extractor tool/app to decompress and extract them

    why mod no work? i spell correctly?
    make sure you actually enabled and installed your mod in the mods menu
anatomy of a mod file
firstly
  • if you want your mod to be added to the game in the case of artifact, character, and spell cards automatically, without the use of a .dll file, you need to 'overwrite' an existing file
  • overwrite is in quotes because unless you edit an existing entry, the game will add your new entry automatically at the end of the appropriate game file
  • the files files this tutorial are going to be using is the .XML files, i dont know jack about .dll, go wait for somebody to make a tutorial for those


    breaking down a .xml mod file
  • the files the game will automatically add to itself for you are any of the ones in the
    \StreamingAssets\Data folder ,were gonna be editing the .xml files since the .lua files serve a different purpose than what were going to be covering
  • each new file you make should to be named appropriately one of these for the type of mod you want to make, artifact mods should be named Artifacts.xml for example, although in theory you could make only one file, dont

    files will need a header and an opening tag to tell the game what we are going to be changing/adding
    <?xml version="1.0" encoding="UTF-8"?> <Spells> ... </Spells>
    for example, the opening <spells> tag can be replaced with <Artifacts> <Beings> <Pacts> etc. depending on the mod your making
    you will need to keep the <?xml version="1.0" encoding="UTF-8"?> tag at the start of the file, this is used by the game to know how to load your file

    at the end of your file you will need the appropriate closing tag
    </Spells>
    in this example

    were gonna be breaking down saffron's default loadout weapon for our example its technically a spell and ive already commited this far to the spell example
    <Spell itemID="CampaignGun"> <Stats animBlast="BasicCast" animShot="BasicSpell" shotSound="mark_02" cooldown="0.05" setToGunPoint="Both"></Stats> <HitAllies></HitAllies> <HitEnemies>true</HitEnemies> <HitSelf></HitSelf> <HitStructures>true</HitStructures> <Name>Field Bracer</Name> <Tags>Weapon</Tags> <Action>Multishot</Action> <Description></Description> <Meta>Fires small shots</Meta> <Flavor>G-4003</Flavor> <Brand></Brand> <Mana>0</Mana> <Damage>2</Damage> <Shots>1</Shots> <Tiles>1</Tiles> <Location>End</Location> <TimeBetweenShots>0.02</TimeBetweenShots> <ShotVelocity>700</ShotVelocity> <ShotDuration>1</ShotDuration> <ShotDelay></ShotDelay> <CastDelay>0</CastDelay> <CastDuration></CastDuration> <BlastDuration>0</BlastDuration> <DestroyOnHit>true</DestroyOnHit> <OnCast></OnCast> </Spell>

    lot of stuff to break down here, were gonna ignore most of this stuff for now, but these tags are the most important,
    • opening ID tag, which tells the game engine what we are editing
    • Name tag, which the player sees, this can be DIFFERENT or the same as the ID
    • Description tag is what the description is that the player sees
    • Tags which tells the game how this thing is used by the game, more in later sections
    • Meta tags seem to be used internally in the game engine, and are not needed
    everything else you TECHNICALLY do not need, as the game will either fill everything else with blanks or 0's, although you prob should add atleast the tags you need for your mod
Spells in depth
were gonna make an example spell based off saffron's weapon, this will be our Spells.xml file including the spell we made before cutting some of the empty junk out
<?xml version="1.0" encoding="UTF-8"?> <Spells> <Spell itemID="TestModSpell"> <Stats animBlast="BasicCast" animShot="BasicSpell" shotSound="mark_02" cooldown="0.05" setToGunPoint="Both"></Stats> <HitAllies></HitAllies> <HitEnemies>true</HitEnemies> <HitSelf>true</HitSelf> <HitStructures>false</HitStructures> <Name>3 burst</Name> <Tags>Weapon</Tags> <Action>Trigun</Action> <Description>shoot 3 shots at a slight delay, can hit self, bypasses structures</Description> <Meta></Meta> <Flavor>M16</Flavor> <Brand></Brand> <Mana>0</Mana> <Damage>10</Damage> <Shots>3</Shots> <Tiles>1</Tiles> <Location>End</Location> <TimeBetweenShots>0.10</TimeBetweenShots> <ShotVelocity>700</ShotVelocity> <ShotDuration>1</ShotDuration> <ShotDelay>0</ShotDelay> <CastDelay>0</CastDelay> <CastDuration>1</CastDuration> <BlastDuration>0</BlastDuration> <DestroyOnHit>false</DestroyOnHit> <OnCast></OnCast> </Spell> </Spells>
notice the opening header, Spells tag and opening Spell tag, these last 2 are different and determine what type of thing we are making then what the name of thing is called

weve already covered what ID, Name, Description, Tags, and Meta are, some of the ones used more are fairly obvious, such as what Shots and Damage do but overall this is a standard .xml spell file, a more "optimized" spell would look more like
<Spell itemID="TestModSpell"> <Stats animBlast="BasicCast" animShot="BasicSpell" shotSound="mark_02" cooldown="0.05" setToGunPoint="Both"></Stats> <HitEnemies>true</HitEnemies> <HitSelf>true</HitSelf> <Name>3 burst</Name> <Tags>Weapon</Tags> <Action>Trigun</Action> <Description>shoot 3 shots at a slight delay, can hit self, bypasses structures</Description> <Flavor>M16</Flavor> <Damage>10</Damage> <Shots>3</Shots> <Tiles>1</Tiles> <Location>End</Location> <TimeBetweenShots>0.10</TimeBetweenShots> <ShotVelocity>700</ShotVelocity> <ShotDuration>1</ShotDuration> <CastDuration>1</CastDuration> </Spell>
since some of our tags are either empy, false, or 0 we can delete or not include these and our spell will work just fine since we included only the information needed for it to work and the game will default to these values if we do not include it

  • <Tags>Weapon</Tags> is somewhat important as it tells the game that this spell is a weapon and will use our characters attack stat for upgrades such as more damage or on weapon hit effects
Artifacts in depth
were gonna make an example Artifact based off the Chalice artifact, this will be our Artifact.xml file before cutting some of the empty junk out
<?xml version="1.0" encoding="UTF-8"?> <Artifacts> <Artifact itemID="ModTestShieldRage"> <Name>Warrior Shield</Name> <Tags>Player, Demo, Solo</Tags> <App trigger="WhileManaBelow" effect="Shield" amount="2" triggerCooldown="0.01" triggerAmount="1"></App> <Description>While mana below 1, rapidly gain 2 shield each 0.01 seconds</Description> <Meta></Meta> <Rarity>2</Rarity> <Brand></Brand> <Params></Params> </Artifact> </Artifacts>

similar to the spell we made earlier, it shares a good portion of code.
  • <Tags>Player, Demo, Solo</Tags> tells the game this artifact is for the player, it was used in the demo, and will only show up once
    obviously this is a custom artifact and doesnt exist in the demo, but you can treat it the same as a blank tag or as if Demo doesnt exist in <Tags> but this is literally a quick copy paste tutorial so im keeping it
  • <App trigger="WhileManaBelow" effect="Shield" amount="2" triggerCooldown="0.01" triggerAmount="1"></App> is the effects of our artifact, which translate to
  • WhileManaBelow 1 apply the effect Shield for 2 each 0.01 seconds

  • we can have multiple <App trigger></App> effects like the Adamantium artifact
  • its important to note Trigger arguments can be in any order

    and once again its optional but we can remove <Meta> <Brand> and <Params> since those are empty
    <Artifact itemID="ModTestShieldRage"> <Name>Warrior Shield</Name> <Tags>Player, Demo, Solo</Tags> <App trigger="WhileManaBelow" effect="Shield" amount="2" triggerCooldown="0.01" triggerAmount="1"></App> <Description>While mana below 1, rapidly gain 2 shield each 0.01 seconds</Description> <Rarity>2</Rarity> </Artifact>
Characters/loadouts in depth
this is our Heros.xml file, which where characters and loadouts are stored
<?xml version="1.0" encoding="UTF-8"?> <Beings> <Being beingID="ModTestSaffron"> <Name>Saffron</Name> <Title>EXAMPLE</Title> <Tags>Campaign, Saffron</Tags> <Description></Description> <Flavor></Flavor> <Weapon>TestModSpell</Weapon> <Health>1200</Health> <MaxHealth>1200</MaxHealth> <Money>10</Money> <MaxMana>4</MaxMana> <BasicCooldown>0.1</BasicCooldown> <ManaRegen>0.5</ManaRegen> <ShuffleTime>2.5</ShuffleTime> <GracePeriod>0.03</GracePeriod> <Defense>2</Defense> <LerpTime>0.1</LerpTime> <Deck>Minigun</Deck> <Deck>Whirl</Deck> <Deck>StepSlash</Deck> <Deck>Thunder</Deck> <Artifacts>ModTestShieldRage</Artifacts> <Stats localGunPointPos="33,34" animName="Saffron" splashSprite="SaffronSplash" altAnims="SaffronWitch, SaffronLea, SaffronLegacy" startingBrands="None,None"></Stats> </Being> </Beings>

  • <Name>Saffron</Name> determines the character were adding to/making, where a custom name will be a custom character
  • <Title>EXAMPLE</Title> is the loadout of the character were making, in this case a loadout called EXAMPLE will be added to the character called Saffron from the ID ModTestSaffron
  • <Weapon>TestModSpell</Weapon> is the spell to cast when the E key is pressed to fire our weapon, remember weapons are technically spells which get bonuses from weapon effects
  • <Artifacts>ModTestShieldRage</Artifacts> is A starting artifact our character has
  • you can have multiple <Artifacts></Artifacts> tags
    as long as you remember to close your opening tags similar to the multiple <Deck></Deck> tags which add a spell to your deck
1 Comments
DENIS_Biomechanoid 🍑 29 Dec, 2020 @ 5:56am 
Is there a way to extract sprites from the game, so I can modify existing costumes for the characters?

:sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki::sssnatsuki: