Ultima Adventures -  Community modded fork Ultima Odyssey

Ultima Adventures - Community modded fork Ultima Odyssey 1.06

No permission to download


So i started playing a thief character. I wanted my thief to be 100% thief, not a warror/fighter. problem is, thiefs could get gold from the quests and from coffers, but couldn't get loot. So i created a new mechanism that allows thieves to steal from monsters, and the loot generated is dependent on the mob's fame. this way you can "steal" items from daemons, elder gazers, etc, while you are going for that pedestal. makes the game much more fun.

While i was at it, it always bugged me how the hidden traps were completely unseen - it wasn't possible to avoid them by skill, it all depended on random luck and skill/stat checks. Also, the damage dealt was fixed, meaning it was either underwhelming for advnaced chars, or overpowered for new players. so i did a revamp of that entire system, with the damage now scaling per the player's hitpoints.

Also, i added a new mechanism to the hidden traps which allows players to carefully avoid them if they are careful. at a certain distance, traps will make a noise (e.g. a click). this is the first warning that there is a trap nearby. f the player gets close, and has sufficient detect hidden, theres a chance the trap will emit a light.

this new mechanic makes it so
1. players need to lower light level to avoid them, and pay attention to sounds, increasing immersiveness
2. be able to avoid the traps if they are careful.
3. know when/where (approx) to use detect hidden and disarm trap manually.

a player who runs all the time won't get the clues in time.

to balance this, ive also made them much more deadlier, for ANYONE - high and low end players.
I think those changes made the game much more fun.

Live on the server!
Last edited:


Is there some sort of wiki or documentation for this project? I dont want or need a detailed wiki in regards to what drops where but i am curious as to certain skill synergies(if there are any) or somewhere that explains what the difference between the coin types are and other "general" things.

Thank you all who put and are continuing to put time into this project!
Post automatically merged:

Also i tried making the skillgains a little easier, ive done some research on how this can be done and played around with the "gainer" part in the SkillCheck.cs file but it doesnt seeme to work or im just doing it wrong. I have tried increasing and decreasing that number with no noticable effect.

What i dont quite understand is the part where it says

harder = Utility.RandomMinMax( 0, 1 );
if ( harder == 1 )
toGain = 1;
toGain = 0;

What does this do/influence

Im by no means versed in programming or altering scripts and have been trying to go by "trial and error" and some research but cant make heads or tails of it
Last edited:


line 126
double gainer = 2;
reduce that to make everything easier :D
1.2 or 1.5

adjust lines 134-139 accordingly. lower the easier.



line 126
double gainer = 2;
reduce that to make everything easier :D
1.2 or 1.5

adjust lines 134-139 accordingly. lower the easier.


Thank you!

Is it possible to do this on a skill by skill basis? For instance i would like taming to be 1.5 and weapon skills to remain at a 2.


you need to change skill.cs in the core and recompile the runuo.exe. theres a table in utilities/runuo2.2/... skills.cs that allows you to adjust all the skills one by one.

like i tell everyone though, if you're gonna play i'd recommend playing on the server - there are lots of new updates coming. I am just adding children to the game now (they will be annoying!), and a completely new land.
Post automatically merged:

just added annoying children to the server this morning!! 1598020182596.png
Post automatically merged:

they beg, follow you around, and do what pesky chldren do :D

Last edited:


you need to change skill.cs in the core and recompile the runuo.exe. theres a table in utilities/runuo2.2/... skills.cs that allows you to adjust all the skills one by one.

like i tell everyone though, if you're gonna play i'd recommend playing on the server - there are lots of new updates coming. I am just adding children to the game now (they will be annoying!), and a completely new land.
Post automatically merged:

just added annoying children to the server this morning!! View attachment 16474

Tyvm again ill try that.

As to the server, i will come back to that offer but first id like to try and play around and see whats what and get a feel for the game. :)


Changes that are live in the server:


August 22
- Added two new abilities for the shadow knight in doom - bullrush and echo strike these should prove

- Added the Widow's Morphing Armor! Now dropped from the Widow under the keep. This very rare armor morphs

you into the widow and grants you powers over the dead - when using it, anyhting you kill will rise again and

help you destroy your foes.
- we apparently have our very first paragon pet on the server (much earlier than i had expected!!). as such,

paragons used to be 2x control slots (from 3 to 6). since that might be tricky to play with, ive made it so

paragon pets are controlslots + 2 instead of *2
- using an npc to repair your items will now cost more and will degrade the max HP of the item by 7-10 points

to help encourage using player smiths
- Investment bags are now of two sorts: (good) and (evil) good benefits if curse goes down, evil benefits if

curse goes up. Evil can now also invest and bet on the system
- New client to download, august 7th (uploading now). includes new anims and new art as well
- adding dynamic loot generation based on the dynamic fame/karma calculation. all loot will now be calculated

based on the creature's difficulty instead of being arbitrarily taken from whatever the person put in the

- Architect now sells display cases, thanks garth
- Changed Login screen
- added new art so that brazies that are "off" will no longer show as nodraw tiles.
- i added a chance that any mobs that spawns has a chance to be "cursed", meaning it was sent to kill you

directly by the evil lord. these mobs will be regular mobs, with enhanced stats and quick speed. the odds of

them appearing is directly linked to the evil curse level. more curse, more odds of them appearing in the

lands. the evil lord (who still needs a name BTW) can now directly affect all the lands in the server
- taming contract book now has a different font color (readable now) and should hold more contracts too
- now that we have frenzied ostards back, in order to make them interesting i've dramatically widened the

range of possible stats/resistances. its now completely random how strong your ostard is, could be super

weak, or a real badass killing machine. pray to the rng gods!
- fixed a few issues with dynamic loot generation, completely redid the lootpack tables - there will be less

items now but higher chance of having good intensities. the idea is the reduce the amount of crap we have to

sift through when we adventure. if you get an item now, it has a higher chance of being better than before.

also, there were many inconsistencies with the loot tables (instruments spawning with 5 attributes at a max of

100 intensity for a skeleton, but with only 10% max intensity for a primeval dragon)
- Added certain items back into carpentry crafting which were removed (crates, tables, etc).
- Fixed error in the code where bowcraft with new types of wood was not working
- fixed error in the code where wood oils were not being applied properly
- fixed issue where certain relics were spawning as items instead of deeds (nodraw error)
- im revamping stealing to make it more relevant. When a stealthed player targets a creature with stealing,

he will have a chance to receive random loot, including (rarely) artefacts and the like. It will be possible

now to stealth into dungeons and steal from creatures. don't get caught! item value will be dependant on

creature's fame. This now makes a pure 100% thief doable, without having to kill anything.
- added a new system where players stay in the world when they logout - (invulnerable). This will help make

the server look a bit more populated - don't worry your toon will be completely safe while you are logged out,

but others will be able to see you, and you will be able to see others
- Decorated lamut with the new MAssive (and beautiful trees) taken from the outlands client. They are a big

improvement over the stock trees.
- Added some sayings for guards when someone is stealthing nearby ("I hear something....")
- Fixed an issue where admins were placing deeds and crashing server (should be fine now to do so)
- fixed an issue where townspersons were healing mobs and creatures and turning grey
- Added a cooldown for snooping skill -where someone could just snoop the same container from 0 - gm in an

hour or two before, now each failure has a 10% chance of requiring a cooldown. the mob cna't be snooped again

for about on hour.
- Fixed a bug with beehives using stacks of potions
- boosted the reward for stealing contracts from the thieves guild... 1k to go to the last level of a dungeon

far away doesn't seem like a fair reward. its now based on the thieve's skill too, where before it was only

based on the map of the quest higher skill, more reward from those. Also added a feature where the more

consecutive thief missions you do, the higher the reward will go - an additional incentive to continue doing

- hopefully fixed the studybook bug where it kept giving you study gains even when logout time was low.
- ive made it so hidden traps are visible now via a faint glow. those will full lights or alternative lights

won't see them, but those who like to play with a bit more atmosphere will. this gives players an opportunity

to detect them and perhaps even untrap them. Also, the traps' damage were fixed before. Now, ive made it so

the damage is based on the curse level and the players health. meaning lower level players wont be one hit

killed and the damage should scale to whoever the player is
- removed a AI glitch where mages would get "stuck" on a corner when trying to keep distance to the player
- darkfather was a long and boring grind before, with 30k hits. he has now been changed to a BaseCursed (my

new AI algo), and hits lowered to 7500. keep in mind that he is MUCH harder than before now, even with less

- have an initial implementation for traps: at 4 tiles you have a chance to hear a sound, at 2 tiles, on

successful check, the trap might start emitting a low light so it pays to walk slowly in the dungeons...

listen for subtle sounds tha twould indicate a trap, like a tick. This makes dungeoneering much more dynamic

and fun.
- Major changes to death system - ankhs anywhere now will NOT require gold, but will drain you from 20% of

your fame/karma. ankhs are so few and far between, but it might be worth seeking them out. death penalty has

also been adjusted (will put more weight on skills/stats instead of karma/fame)
- The [rares] spammer vendor now sells random scrolls of transcendence and alacrity
- Changed item damage to make items need repair from 4% to 6%
- We now have children in game! I'll be spawning them randomly in cities. they are annoying - good luck!
- player's bodies/bones are now fully movable and will not decay, marking your death permanently in the world.


Ever wondered why ALL doors in dungeons are completely unlocked?? I've wondered the same thing! It doesn't make any thematic sense for all doors to be unlocked (unless they have some quest purpose). With this in mind, ive implemented a new mechanic by which dungeon doors will be randomly locked/unlocked every 4 hours or so. the system works like this: 80% of all doors will be unlocked per normal. 20% of the doors will be locked. Of those, 65% will be easier locks, and 35% will be harder locks. Skeleton keys can be used for easier locks, master skeleton keys can be used for harder locks. magic unlock has a chance to unlock easier locks only.

this will make adventuring in dungeons a lot more interactive

live on the server


I was able to add an interesting new mechanic to the game today.

Ever wonder why you are able to see all the enemies in a dungeon, even if they are behind a closed door or in a hallway that isn't even connected to where you are?
I found this to be incredibly immersion-breaking. Not only could you see everything even if you shouldn't be able to, but it took a lot out of the "mystery" of exploring a dungeon.

So - ive coded a change today that makes it so mobs are "hidden" from the players if the players aren't in the line of sight of the monster. for example, here this player can't see what lies behind the door


When he opens the door, the monsters inside are revealed (and attack the player!)


This makes dungeoneering MUCH MORE FUN, dynamic and mysterious.
you can't magically see what lies on the other side of a door anymore.

I will eventually tie this in with tracking - to allow players to see mobs they shouldn't if they have high tracking (thus giving a purpose for the skill)

what do you think?


tweaked the system a bit to account for a few bugs, and added the tracking bonus as well. will improve as the players *cough*ginea*pigs*cough* experiement with the system on the server.


I am gonna chime in here. The concern with the "server load" (you mentioned in another thread) shouldn't really be a concern for this game. Because it is marketed as a single/multi player adventure game...anyone running it would be surprised to even have 20 players on it. I have many systems in this game and I don't think they would survive a 1,000 player base and the server would quickly crumble if that occurred...but again...that isn't the target audience for this particular game. We either play it alone or with 5 or so friends. So your move to the OnThink portion shouldn't be a hit of any consequence.

What you are trying to do here is what Odyssey does on the high seas already. Many sea creatures remain hidden until a player comes nearby and then it hops on board your ship or the shore (demons do this in the land with the open portals and such to simulate demons appearing from hell). That is all in the OnThink section for when they reveal and when they hide. Also, many mobiles are player range sensitive...meaning they don't do their OnThink unless a player character is nearby...so that should seal the deal on the needless worry for what you are doing. If you perfect it, I think Ultima Adventures will still function fine without any repercussions. An example of where you see this is when a unicorn and demon are near each other. They don't really attack each other until a player is nearby...which has the nice outcome of a player witnessing the fight instead of them happening off-screen.

For the sea creatures, I did some code to allow those tracking to "track" them without any calculations for hiding...because tracking comes in handy much more on the high seas and you are looking for pirates and such...or you get a quest to kill a particular sea monster.


thanks for that djeryv - i can confirm that the system works really well for dungeons, and im happy to hear about the server load not being an issue!

I'm also happy (as always) to share the code i have in place now for you to review. I didn't base it on the high seas/demons (which i did notice was in there).

As an aside, we have added onetime to the server - and ive been using it for most of my complex scripts now, its a really nice addition to the server - sort of like the central timers you have running at the brit castle but in a format that is easily pluggable into scripts.


Using the command "[changecharacter" when account have only one character, the server will crash.

Scripts\Server Functions\Commands\ChangeCharacter\commandChangeCharacter.cs

public static void ChangeCharacter_OnCommand(CommandEventArgs e)
            Mobile from = e.Mobile;
            NetState ns = from.NetState;

if (ns.Account.Count == 1)
                from.SendMessage("You are unable to change characters when you have only one character.");
Last edited:


great spot!! Thanks for sharing that!

Many bug/crash fixes have been applied to the server since the last update here.

We're about to go live with darkmoor, a new land where cities are full of evil people and hunting grounds are full of good mobiles - a land for evil players. I just finished the quest to enter darkmoor and will be testing this in the next few days.


i got an error saying that i need to delete an object and when i do that i gives errors...
nvm i had to put to C:
Post automatically merged:

i changed mysettings.cs like this
public static int statcap() // This server can accomodate unlimited statcap. What should a NEW CHARACTER's statcap be?
return 350;

public static int PlayerLevelMod( int value, Mobile m )

double mod = 1.0;
if ( m is PlayerMobile ){ mod = 2.00; } // ONLY CHANGE THIS VALUE

value = (int)( value * mod );
if ( value < 0 ){ value = 1; }

return 1000;

and statcap is still 250 and hitpoint stays same did i do something wrong here?


can't run the game now
getting this..
There was an exception while attempting to load '[CliLoc]':
System.TypeInitializationException: The type initializer for 'Ultima.Files' threw an exception. ---> System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
at Ultima.Files.LoadDirectory()
at Ultima.Files..cctor()
--- End of inner exception stack trace ---
at Ultima.Files.GetFilePath(String file)
at Assistant.Language.LoadCliLoc()


If i were you i'd play online and never have to worry about this :D

I really can't support the offline players - everyone installs the game differently, run different clients, etc etc. I recommend you get the classicuo launcher and use that as its more up to date. Also, if you play offline you will likely have to overwrite the save file at next update if you want the new content.