I've been working hard on Alternate Reality Remake. I'm so close to having the city complete, I think I'm really about 95% code complete on The City. Tons of testing is required at this point. This will allow the dungeon to move quickly since the CORE of the game is now complete. I took assembly 30+ years ago and have not touched it since. Digging through all the assembly code to try and get it pretty close the original game is time consuming. I never learn 6502 assembly, I started on PC based on Intel chips. So now, I'm comfortable with 6502 assembly. Having the Atari800 Win Plus emulation helped so much, having to go through all those 0x6300 and figuring out what all those memory locations mean. Many where located over the internet and was a good starting point. Figuring out the Special Effect was the biggest help. Seeing what effects altered what memory locations and looking up those guidebooks that tell you what each item kind of does. That would allow me to figure out what that memory location meant. Also, many of the variables in monster data was not defined. There are many of them that are bit options and not. Digging through the code, I've figured out many of the things. Like one bit means whena creature leaves, instead of saying "The Bat leaves" if the bit is on it means they "Fly" so the wording would change to "The Bat Flies away".
I think I have all the special code for each of the Monsters complete. Devourer, Thief, Acolyte, Basilik, Champion, Flame Demon ..... There are onLoad, onSurprise, onPreAttack,onDeath special code for many of those creatures. They appears all to be working nicely now, of course debugging is required. So watch out for the Devourer, it will know suck up inventory items. Also, Thieves will attempt to steal and item from you, so watch out. Spells casters have a special greetings if you are from an enemy guild or a friendly guild. Example, the Ghould has a special onDeath code, where it has a chance to cast a curse on you. Added special code for the Slime creature.
Also, too the time to complet the Dungeons Fixed Treasure items. They are all inside the game and complete. I've not tested it to make sure the original ArX map files have the correct fix treasure in the correct spot. But code wise, they are in there and complete.
The Dungeon altered the monsters stats on loading the encounter. These changes are based on the players level and other status. So the game gets harder as you get stronger and go up in levels. So you should never become to strong and the game becomes to easy. I've completed this code.
The "Transaction" option in combat is not just based on attacking, but also is affected by default monster data.
Weapons found after a battle can be cursed, there is a small chance to have a curse. The curse will be added if this happens.
During battle the code is complete of being knocked down, staggered or dropping your weapon based on your strength, monster strength, stamina, luck and power of the hit. Also, the dodge code is complete. Also, during an attack you have a chance of being stunned and lose your chance for that round to attack. During battle some creatures can cast spells, this is complete. They will cast spells based on how injured they are. Also, if they get to injured that they have a chance of during an potion to heal themselfs.
Weapon breaking is not in the code. so watch out, your weapons can break.
Now, I think I have code in place to call an active special effects everytime you or monster use an item. Pickup, use, drop alignment check. Alignment check is done every time you use an item. So a good character using an evil weapon will get the alignment check during battle.
Removed potions from source code and now loaded out of the dungeon item file. There are 53 total potions that include the city potions.
"Offer" during combat, if it is not accepted then the offer will be located on the ground like the Dungeon. If the encounter gives you something, it will be located on the ground.
You can cast spells during combat. Casting spells will cause you to lose your turn, so if you cast a strength spell. That is your move for the round.
I've converted many of the binary files into JSON files, the monster data, monster weapons, dungeon items are all loaded from JSON files. I did this because the mixing of the City items and Dungeon items. I didn't want to work inside of a binary file.
Treasures after the encounter has changed. When you create a character you have 2 options, 8-bit style or 16-bit style. The 16-bit style is far more advanced in what you get from whom. I like the 16-bit version, once a character is created, you can not switch it. Your character is stuck in that style. You will not get a sword from a "Rat", each encounter has a definition of the chance of each of the treasure items. Then it has a random chance of zero and beween a number defined of how many items of a treasure item you get. If the game comes up with a weapon for a treasure item. You will get the weapon of the monster used. For instance, you have a chance of getting a potion and wands from Spellcasters but only them.
- Added - Devourer pre-attack code, the sucking up your items into his mouth.
- Added - Thief onLoad code, this handles surprise,demand money, and stealing from player. also check if you are part of the thieves guild.
- Added - All Fixed Treasures are now located in the Dungeon.
- Added - Cost of buying a spell now matches the dungeons, of course are there city spells that are not in the dungeon.
- Fixed - Fixed starting HP to be between 7-28, to make starting hp points.
- Fixed - Transaction option. It was just based on alignment, but the regular code is based on a few random option plus byte 21 of the monster data, bit 5,6,7
depending on different states. Just because there are uninterested one time doesn't mean for the entire combat.
- Added - added greeting for spellcasters. The greeting depends on if you are part of the same guild, enemy of the encounter guild. or nothing to that guild.
- Added - random curses to weapons found. There is a small percentage for predefined curses.
- Added - onDeath code for the Ghoul
- Fixed - Slime onDeath code and OnPreAttack code is now complete.
- Added - Depending on the strength of encounter attack, you can have a better chance of being knocked down or losing your weapon
part of this is option is skl, stamina and luck that allow you to take the hit. This now matches the Dungeon code.
- Added - You dodge the blow to the attack encounter. This is based on luck and skill values.
- Fixed - knock down during battle, was a complete random number. Now matches the assembly code.
- Added - put in the code to lose your weapon during combat. Also, added in the stunned option during combat when an encounter attacks.
- Fixed - Fixed code on attack, if it is a regular attack, staggered or knock down. Not all encounters can be knocked down. There is a bit
that tells code not possible. There is abit for staggered also, if bit is on, then it becomes regular hit.
- Added - Added code to match weapon breaking. Some weapons are unbreakable.
- Added - code for spell casters, they have a chance to cast spells.
- Added - some creatures will drink a potion once hp is below a certain amount, added this code to match the assembly code.
- Added - onSurprise code for Champion. It has a special surprise screen.
- Added - onPreAttack code for basilisk. It can give you a staring glance and can kill you, or you could block it with the right shield.
- Added - onLoad code for Ronin, it is just a saying based on status bits of the of monster and how many there are.
- Added - onPreAttack code for FlameDemon and Goblins, can summon more flame demons.
- Added - onLoad code for Guard changes the encounter from Palace Elite to Guard, it picks it randomly
- Added - onLoad code for Knight changes the alignment, Partial random + 64 for new alignment even time encountered.
- Added - put in a check for Special Effect Use Weapon. It will now run the special effect when you use or unsuse a weapon.
- Added - Put in a check for special Effect Drop. Now when an item is dropped and has a special effect for drop, it will run it.
Like, Sword of Light. You get Light when you use it, and goes away when dropped. Now this item is working.
- Added - Put in a check for special Effect Use. Now when an item is used and has a special effect, it will run.
- Added - Put in check for picking up an item that has a special effect that relate to pickup. So a curse will happen when you pickup the weapons.
- Added - Dungeon would increase monsters lvl,hp and stats based on the players level. That code in now in the system. Monsters
will not be be the same level all the time. Once you get to be high, the game will adjust its difficulty level.
Also, Number of monsters at one time is now reflected the of the dungeon code. That is based on your level and area of the dungeon
you are located to reflect the number of monsters you are fighting.
- Fixed - Opening greetings for Thief, if you do not yield, they will steel from you. Arx didn't handle time piece and compasses correctly.
Also, thief doesn't still from you if you belong to a thieves guild. No check for that.
- Fixed - Opening greetings for Knight reflects the dungeon code. It demand you to yield and now will yield to you if condition matches
- Fixed - Removed Potion from source code, Nothing is hard coded anymore. They are loaded from an external file. All potions use the Special Effects
as everything else to handle its ability. One generic system for all things in the code.
Combined the The City Potions and The Dungeon Potions together into one list of potions. This makes 53 different kinds of potions.
- Fixed - Figured out alignment position in monster file for encounters. They are part of the game.
- Added - Completed the surprise code, now when an encounter starts up. the surprise code will execute.
- Added - Added 'Cast Spell' to encounter. Now you can cast spells during encounters.
- Added - Changed the way monsters data is loaded, instead all of them creating a generic Monster class, certain Monsters has their own class and it creates
that class. Ex. Thief, Merchant, Devourer. All have their own class. They have methods to overload the standard "onload" encounter function.
"offer" functions and etc. This way the encounter routine doesn't have to have huge if statements to do something different for this person or not.
Encounter methods just calls the standard method and certain classes overload them.
- Added - Completed the Offer options for all the different kinds of encounters. If offer is not accepted then the offering will be dropped to the floor and you can get it after the encounter.