Jump to content

Search the Community

Showing results for tags 'modding'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Spiderweb’s General Boards
    • General
    • Tech Support
    • Announcements
  • Spiderweb’s Game Boards
    • Avernum Trilogy (2011-2018 remake versions)
    • Avadon Series
    • Second Avernum Trilogy
    • Geneforge Series
    • Avernum Trilogy (2000-2002 original versions)
    • Nethergate and Nethergate: Resurrection
    • Blades of Avernum
    • Blades of Avernum Editor
    • Blades of Exile
    • The Exile Trilogy

Blogs

  • One day, I'll have a techno band.
  • Crystal Souls
  • Jewels of the Mind
  • Avernum RP — Knights of Old Avernum
  • Masala of Life
  • Zummi's Blog
  • Aʀᴀɴ௵ᴄᴀʏᴛᴀʀ
  • After the Gold Rush
  • feilangxiao's Blog
  • Tales from Lynaeus
  • Dying Light
  • BJearles' Blog
  • The Life and Times of Dr. Alorael
  • Ir the Great's Blog
  • Tgiiif_2004's Blog
  • Tevildo's Blog
  • wenyue's Blog

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


MSN


ICQ


Yahoo


Jabber


Skype


Website URL


Location


Real Name


Favorite Games


Interests

Found 5 results

  1. Hello, all. Due to the present difficulty of modifying zones in Geneforge, I have been working on the wonderous Geneforge 5 Modding Suite program. At present, being a demo, it lacks full functionality, but it can be used to create a fully functional zone and can export data to a text file for use with the Blades of Geneforge spreadsheet document. Feel free to give feedback, but remember that it's only a demo version (all versions will be free, of course). This is the final demo version of the Geneforge 5 Modding Suite. Sometime in the future I will be releasing the full (still free) Shaper Edition 1.0. Latest version. - Trakovite Edition v1.1c Older Versions: Download. Other download. Development photo album. The GUI is fairly intuitive, but feel free to reply with any questions you have. (On an aside, in their respective modes, you can right click on a tile to remove terrain, items, objects, and creatures) Updates: Trakovite Edition v1.1c: Updated save file format. Previous save files will not be compatible with this version, but all future save files will be backwards-compatible. Also added all other pieces of zone information, including world position, linked zones, world symbol, etc. Trakovite Edition v1.1b: Added proper wall functionality. The two kinds of walls can be set to one of 11 options in the 'Edit Zone Data' panel. Tileset information now exports with custom data instead of preset biome-specific data.
  2. Part 2 link. Useful information: Ability and stat ID list Welcome to my Geneforge modding tutorial. In this, we will be focusing on modding Geneforge 5, but the same principles underlying this apply to the entire series. Despite the minor differences between the definitions files and scripts of older and newer games, you can still apply this modding knowledge to older games (especially Geneforge 4, which is nearly identical to Geneforge 5 in terms of design and mechanics). Zone Script Editing: In each game's scripts folder, a zone has two separate scripts: the zone script and the dialog script. For example, the first zone in Geneforge 5, the Pacification Fields, has two zone scripts: z0pacific.txt and z0pacificdlg.txt. The first one holds data on the zone itself. This includes such things as event keys, such as cutscenes and mob states, as well as definitions for 'special' locations (for example, areas where dialog is triggered when you enter them) and the text that shows up above creatures' heads and above the text box at the bottom of the screen. Let's take a look at some parts of z0pacific.txt. beginzonescript; This indicates the beginning of the script. Without this, the script will not load properly. variables; short crime_tolerance = 5; short last_abil; short i; short roamer_warn = 0; short cutscene = 0; short kludge_count = 0; This defines variables for local zone data. This includes how much you can steal before you get in trouble (crime_tolerance) as well as various variables for zone status. 'short' is a variant of number, technically a 16-bit integer, ranging from about -33000 to about 33000. body; beginstate INIT_STATE; Body defines the actual content of the zone script. The INIT_STATE defines how the zone behaves when first created, as player interactions can change it. Inside the zone are such things as: set_level(37,3); set_name(38,"Crazed Roamer"); set_aggression(38,7); change_max_health(38,120); These set data on creatures by their universal ID in the game. This can only be determined by experimentation with modified scripts in-game. In order, they set creature 37 to be level 3, set creature 38 to be named "Crazed Roamer", set its aggression to '7' (likely a state of hostility with lower awareness) and its max health to 120. You will also note that each line is terminated with a semicolon. This is important. if (get_sdf(1,6) > 0) { make_zone_hostile(); } This causes the zone to be hostile if a given SDF (a stuff done flag, which stores universal data across all zones) is true. set_crime_tolerance(crime_tolerance); This sets the crime tolerance to be what was previously defined. break; This finishes defining the state. beginstate EXIT_STATE; break; This defines the exit state, which is empty in this zone. beginstate START_STATE; This defines the start state. In this section are the tutorial guides from the beginning of the game, i.e. gathering your weapons and armor. This section checks whether the flag for having equipped an item (ID 61) has been set and whether it is equipped. If so, the flag is set (so it cannot constantly repeat) and the map tells you to search for the armor in the storeroom. if ((get_flag(0,7) == 0) && (has_item_equip(61))) { set_flag(0,7,1); set_terrain_string_range("Now that you have a weapon, search the locker in the back of the storeroom. Click on a locker, box, or other container to open it.",3); When the zone has been sufficiently completed, that is, when these conditions are met, the zone is set to have been cleared. In this case, it checks to see if the zone has not already been cleared and if a given flag is set. Take note also of the //, which comments out a line. In this file, lines are split by tabs, so only the // clear zone? is commented out. Comments do not impact the script at all. // clear zone? if ((zone_clear(ME) == FALSE) && (get_flag(0,25) > 0)) { print_str_color("Now that this door is open, you can pass this area freely.",2); clear_zone(ME); } This part checks to see if your crime level exceeeds the tolerance of the zone (and hence you could make an extremely crime-tolerant zone by raising crime tolerance to absurd levels) and, if it does, causes the zone to be hostile. In this case, you will notice that an SDF is also being checked. This checks whether you just automatically die, as happens when you anger the zone before being able to leave the Greyghost mountains. if ((get_crime_level() >= crime_tolerance) && (get_sdf(1,6) == 0)) { make_zone_hostile(); set_flag(1,6,1); } if ((gf(1,6) > 0) && (gf(2,1) < 2)) begin_talk_mode(290); This performs a check on a random (get_ran) and, if it is an acceptable value, makes a creature (in this case the artila in a side room) hiss. if (get_ran(1,0,100) < 10) give_char_text_bubble(36,"Sss."); Here, the actions in the final cutscene occur. If the cutscene has not yet occurred (gf(0,1) == 0), it checks to see whether creature 50 (the vlish) is dead (char_ok(50) == FALSE) or (the characters || mean a logical OR, while && means AND) its health is below one half, it starts a cutscene, spawning Rawal and moving him around before finally murdering everything. break; The INIT_STATE finishes with another break. At the end of the file, a number of states are defined. Here, interactions with certain objects are defined, as well as extra tutorial information for the player. Dialogue Scripts: The dialogue script, z0pacificdlg.txt, is much more readable. It starts in a similar way. begintalkscript; variables; Dialogue is split up into a set of talk nodes, each of which is defined by begintalknode;. There is a limit to the number of these you can have, although I'm not entirely sure how many are possible in total (per zone), but I believe you can have at least 200 per zone. Let's take a look at the first talk node. begintalknode 1; state = -1; nextstate = 180; condition = get_sdf(0,5) == 0; question = "special"; text1 = "As you stumble through the barracks, your head clears. A tiny bit."; text2 = "It looks like you have been living cramped in here with a dozen serviles, the short, humble servant race of the Shapers. It is peculiar. Why would a human be left to live in squalor with them?"; text3 = "Also, your clothes are unusual. They seem like the outfit of someone in authority, perhaps a soldier or a Shaper. They are ill-fitting and torn, though. And in need of a wash."; text4 = "It looks like you have been living cramped in here with a dozen serviles, the short, humble servant race of the Shapers. Since you are a servile yourself, that seems like it would make sense."; text5 = "And yet, it doesn't feel right. The Shapers keep their serviles ignorant and terrified of authority. Somehow, you know that you deserve better than to be living in this squalor."; text6 = "The sounds of chaos and panic coming from outside are showing no signs of ending. You start to look around for something you can use to defend yourself."; action = SET_SDF 0 5 1; code = if (creature_type(pc_num()) == 46) { rs(2); rs(3); } else { rs(4); rs(5); } sf(97,0,100); break; The state is, in a way, the address of the talk node. The nextstate value indicates the state of the next node in the 'series'. A state of -1 or nextstate of -1 indicates, respectively, that the talk node is the first in a conversation or the last. In this case, we have a modified dialogue script where the nextstate points to my Geneforge 5 character editor for testing purposes. Consequently, anything with state = 180 will show up as a conversation option in the list here. Note: In this scripting language (which appears to basically just be C++), the comparison to see if something is equal is ==. A single = is used to set a value, e.g. short value = 1. Condition indicates whether the talk node can be reached. If it's an option in conversation, condition will determine whether the node will show up in the list of responses. 'Question' indicates the text of the option in the conversation list. when a talk node starts as the result of - for example - talking to a creature or object, the question is named "special". In a dialog list, the question would be whatever the player says or does, e.g. "Continue.", "Nevermind.", "Did that creation just say yanny or laurel?", etc. There follows a list of text items. Each is printed out in the dialog box, one after another. You can safely have--at most--8 text options. However, I would advise sticking to a maximum of 8. The lines of text of a few important characteristics. One, and this is very important, the length of the 'string' (that is, a section of text) cannot exceed 256 characters. If you attempt to do this, the dialog script will break. Secondly, as the string is enclosed in quotes, if you want to have quotes inside the text itself, you need to put underscores. That is, if you wanted to print out "Hail and well met," the cow said., the associated string would be "_Hail and well met,_ the cow said." Finally, the quotes enclosing the string are not optional. They indicate its beginning and end. The action can do a few different things. For the most part, you'll probably want no action. However, when you want the conversation to terminate on this option, you will want to set action = END_TALK;. You should also set state to -1 for this. You can also, as this conversation does, set an SDF. You can do literally the exact same thing in the code section, except with multiple stuff done flags, so I personally do not see any reason to use this. Take a look at the various dialogue scripts to find what various other ones do. The final section is the (optional!) code block. In this, you can do all the coolest things in a conversation. In this case, there are two functions being used. rs(number) removes a string with the appropriate number inside it. For example, rs(2) removes text2. In this case, it is being used to display different strings for serviles versus every other class. The other function is sf, which sets a flag (gf, for reference, gets the value of a flag). In this case, flag 97 0 is being set to a value of 100. There are various other things you can do here, including but not limited to: Give items with reward_give(item id number); Give special items with set_spec_item(special item id, number); Give the party XP with award_party_xp(amount,level of xp); (if you want the XP to scale with the PC's level, use get_level(pc_num()) for the 'level of xp' parameter). Alter the PC's stats with alter_stat(stat id, amount to increase); In this last case, the PC's stats include not only attributes and skills, but also spell and creation levels and resistances. A partial list of the different stat IDs is: The code block is terminated by a break statement. Talk nodes without code do NOT have break statements. This concludes the script editing portion of the tutorial. Stay tuned for the definitions tutorial, where we will learn how to modify items, spells, and creations.
  3. I decided to start this thread to share scripting advice with similar minded people so that we don't have to reinvent the wheel every time. Using "exhaustive search" technique and this trick: In a dialog script (signposts are nice), put this temporary script (Remember to remove it after testing!): code = num=10; // It can be whatever number you want from the creatures in the zone // you can see the numbers if you use the editor. add_char_to_party(num); temp=1; while (temp<3005) { if (char_in_party(temp) > 0) { change_coins(temp); } temp=temp+1; } break; You talk to the signpost, creature 10 is added to your party (if spawned) and then you see its number from the coins you gained. I don't know how good you're in scripting, so I'll add this: At the beginning of the zone dialogue txt, you should have: // dlg.txt begintalkscript; variables; short num; short temp; MY PROBLEM: And that's a big one, so please help. Not all creatures seem to have a "total" number! After ~20 hours of work I can't find the number for the mages in the bone peaks. I can do some stuff to circumvent it and not lose a whole quest chain, but it would be far simpler and more efficient if I could find, or generate, some identifier for them to see if they're in party. Else if I put a flag when they're recruited and then they die or are dismissed, the events will keep happening...
  4. ZorroDragonslayer

    mod Secret Bovine Society Ava3

    Link to download: Ava3 Bovine mod The Read Me file: The Secret Bovine Society is a mod for "Avadon 3 - The Warborn" by Spiderweb Software © 2016. Mods are not supported by Spiderweb Software. As it was for Avadon 2, this mod was created for my own use to increase the entertainment level of the game AFTER I did several complete playthroughs. However this is not a small mod like it was in Av2. FYI: The game engine was not modified so the mechanics are the same. After reading Jeff's blogs on game creation, very inspirational I might add, I was energized to expand on this mod and do things I did not originally think about while playing the game. That being said, it still takes a long time to create an extensive mod because you don't know or have access to the code and data locked up inside the app. You have to use trial and error to see how the engine reacts to your ideas. You have to learn where the line is drawn and not to theorize about writing something on the other side of it because that is a private territory. To make a long story short, it's not a perfect project but I hope it is good enough to keep the Spiderweb family happy and "diverted" into the otherrealm to fill in the time until Jeff makes another game or more mods are made or both. There is so much potential for mods that I kept wandering off my missions and refocusing back to what my prime directive was. The primary goal for making this is to be swept away to another reality but stay lore-friendly. Start with an open mind because there are quite a few modifications. So far there is no guide or list of changes because I think the Aha! effect is an important part of the game and I want to maximize that. There will be some orientation in the beginning of the game. Please take the time to read the dialogues. Installation: After downloading and unzipping the project, there are two ways to install it. One way is to back up completely your folder named Resources (Mac) or Scripts (Windows) and then drag all of the files from the Bovine folder into your original folder and let the system replace the old files with the new ones. The second way is to just remove the duplicated files from your folder to another folder temporarily while playing the bovine mod so that none of your originals are erased. Then start a new game. This has been tested on three machines and three systems so far so any feedback would be welcome. Preferably privately to prevent spoilers. Thanks for your interest and thanks to Jeff Vogel for a great game that can be modded. (Hopefully more files can be pulled outside the app for more complex modding in the future ;-). ) P.S. I am not a graphic artist. All photo and artwork copyrights belong to their respective owners.
  5. idonotexist42

    Scripting questions

    Before we go any further, I've read every thread on scripting that I could find and the questions I'm about to ask weren't covered in those threads. For the most part I've been successful with my modifications and reverse-engineering how the scripts work. I've been playing spiderweb's games since whenever G1 came out, it was one of the first games I remember playing, actually. The questions I have are more about what is and isn't possible than how to code stuff except for a few specific issues. I'm working on G3 at the moment, but starting on G4. I know you can't add new creations, only replace them, but I have discovered that there's room to add new spells, there's unused numbers and I had no issue making a multi-target seater and a cool disruption breath attack with the reaper impact effects. I was wondering if there's room in the scripts to add new items like you can with spells, it's not like how with the spells it tells you which numbers are reserved for what up front and it's easy to check. second- can you make a spell that causes multiple status effects, like say poison and acid at the same time? can you cause something to do two kinds of damage at once? Also, what I'm having trouble with now is making AOE damage spells like Aura of Flames. I tried to make an acid based version to give to the Rothzidon, and an energy based one for shits and giggles. I assigned them each to a wand to test them, and while they aren't totally broken, they only work as single target spells. I tried a couple different things, copy and pasting from aura of flames and just changing damage types and visual effects, and the same method with the acid rain that was already there. After these didn't work I tried using the import function and still didn't work. I don't think its an issue with the wands since they work fine with the regular aura of flames in the wand of inferno. This is really bothering me because it's the only thing I haven't been able to figure out on my own. In terms of modifying creatures, I've had some issues assigning different attacks to them when I change more than one at a time. I had no problem with most of them but a few creation types were begin weird about it. I made a modified roamer and it seemed like I just couldn't change it's ranged attack. I eventually got that to work by changing where I put the line (further down than normal) but then I couldn't get the melee attack to change. I'm almost afraid to try adding a ranged attack to a melee creation (like giving the acid aura to the Rothzidon) for fear that the animations will be broken or something. Also, I don't think I've been able to find a reference as to what the numbers for each status effect are. I've been ok copying and pasting so far but it'd be nice to have a chart to look at like I do for damage types and stats and such. a couple things regarding items: could I give stat bonuses to ranged weapons like Thorn Batons and Javelins or would that break something? and item enhancements, how the hell do they work? I think there's some other stuff I'm forgetting but those are the most pressing questions. If anyone's interested, I can put up my current tweaked files. Some of the items I've changed are a touch OP, but in terms of creations mainly what I've tried to do is make sure all the upgraded versions you get with three points are actual upgrades. After reading a bunch of analysis's that pointed out how a lot of them were just recolors with a higher base lvl I was quite distressed. I think some might be slightly overpowered now but with some minor number tweaking they'd be well balanced. I gave Searing artillas an extra AP and a 3 target searer spell (which I might want to reduce the damage of), and a poison bite. The plated bug got some armor and a poison attack. The Thad shade which was already pretty good I gave the icy touch attack that all the other shades have and gave a nice blue color. The useless exploding roamer I replaced with a "Disruption Roamer" it has a 3 target breath attack that does disruption damage (so it slices through most creation's resistances but is totally useless against quite a few enemy types) that looks like the ice breath but makes the cool reaper explosion when it hits. I may reduce their health to make them more of a glass cannon because they're sort of OP for how low their essence cost is . Also they're teal and they glow. I want to give the rotzidion an AOE acid aura. Balance wise, I think my modded creations might be too good relative to other higher tier creations you can make, but relative to the foes you fight they aren't so powerful that it unbalances the game. My thad shade and first searing artilla are crazy powerful just because I kept them the whole game and they're really high lvl, and in G3 leveling up creations makes a huge difference, but when I initially shaped them they weren't out of balance. Even in the end game they only manage to hold their own and aren't just slaughtering everything. A freshly shaped one definitely wouldn't be able to compete in the end game. the plated bug is still rather weak, and the disruption roamer doesn't do anything to a lot of enemies at all, and the damage isn't super high. My main concern is that they make all the third Tier creations obsolete. 4th tier is still stronger.
×