Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Object Overhaul - ready for review and merge. Still Work in Progress but a good spot. #341

Merged
merged 19 commits into from
May 20, 2017

Conversation

ogmage78
Copy link
Contributor

@ogmage78 ogmage78 commented May 16, 2017

  • Continued work on Overhaul
  • Created mapping cross reference file to facilitate documentation and cleaning up names - work in progress https://goo.gl/eaaNQb
  • Created new database schema for world_object - modified mysqlinstall.bat to reflect new baseline
  • created script to ETL old schema to new schema. I have not included it as we will be refactoring the initial data load to use the new
  • schema according to Ripley. I have the script tested and posted on my dropbox if anyone wants it. I also have a complete data dump that
  • zips down to a manageable size.
  • BaseAceObject is now using the new schema
  • I re-hooked up telepoi to use the new schema. Still to do, convert to constructed statement
  • @moveTo works which shows we can spawn world objects out of new data schema.
  • Next steps - refactor AceObject and make sure world objects load again.
  • re-enable and expand constructed statement test. We have a constraint that the old test would fail.
  • Once that is complete - start same process using clone of this schema for character as discussed.

@@ -5,12 +5,60 @@

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we rename the file to match?

public uint PhysicsDescriptionFlag { get; set; }

[DbField("physicsScript", (int)MySqlDbType.UInt16)]
public ushort PhysicsScript { get; set; }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PhysicsScript = PScript I gather.. wonder if that is misleading as PScript is linked to the PlayScript enum which I think is used to designate the effect to be immediately played upon createobject message being recv'd by client
PlayScript

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I misread that - I will rename the database field. and refactor in code to PlayScript.

public virtual uint AceObjectId { get; set; }

[DbField("bitField", (int)MySqlDbType.UInt32)]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think we renamed this in the new db

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking the time to review and good catch. I will fix it. As you can tell - I am not yet actually pulling the data or that would have blown up. :)

[DbField("motionTableId", (int)MySqlDbType.UInt32)]
public uint MotionTableId { get; set; }

[DbField("physicsBitField", (int)MySqlDbType.UInt32)]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also think this got renamed in new db

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will fix.

public uint WeenieHeaderFlags { get; set; }

[DbField("spellId", (int)MySqlDbType.UInt16)]
public ushort SpellId { get; set; }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wonder if this should be a offshoot table, seen any examples of items with spellid being multiples?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if not needed to make a separate table PropertyInt.ItemSpellcraft might be the corresponding property

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to run this one down for sure. I bet you are right - I bet it is spellcraft. Can you see if you can tell how it is used in the client?

@@ -160,101 +160,101 @@ public virtual void SerializeCreateObject(BinaryWriter writer)
if ((WeenieFlags & WeenieHeaderFlag.PuralName) != 0)
writer.WriteString16L(GameData.NamePlural);

if ((WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0)
writer.Write(GameData.ItemCapacity);
if (((WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0) && GameData.ItemCapacity != null)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the way I read this (and the others below) is if ItemCapacity is one of the flags in the WeenieFlag AND GameData.ItemCapacity is not null then write the data, is that right? If so, I believe this will lead the client to choke on the message because the WeenieFlag is sent telling it to expect ItemCapacity but then we provide it no data or wrong data from another later write.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well I might be wrong - but first - the binary writer will not write a null. The first part of that were we are checking the weenieHeaderFlag against the specific mask != 0 means the flag is set and we want to write out the value. I just had to add the check to make sure we are in fact not trying to write a null. I don't think that is wrong. Can someone else verify how that should be handled? I either need to add that check or assert that it is not null. Please advise.

Copy link
Contributor

@fantoms fantoms May 16, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0) && GameData.ItemCapacity != null requires that Weenieflag must be set, and the business object must be a non-null value for the writer to send data.

Ripley is stating that the client may be expecting this, if the flag is sent in a different writer.write packet in the WeenieFlag packet:

line 149.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I must just be missing what you guys are driving at - can either of you give a concrete example? If the flag for Item Capacity is set - you have to send something non null. If you unset the flag - it does not matter what is in gamedata.ItemCapacity - it is not going to get sent to the client. That is how it was working before I did anything to it. The flag controls the write on our end and tells the client what to expect to read on the client side. Sorry for being obtuse - but I don't understand what you guys are driving at.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll have to apply this to all of these. The basic issue is that we have flags that are set in bulk. Flags should be calculated based on the presence and absence of data, not arbitrarily set and then validated after being written.

if ((WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0)
{
    if (GameData.ItemCapacity != null)
    {
        // write out items
    }
    else
    {
        // we wrote the flag in the header, failing to write at least SOMETHIGN will cause the client to barf on the packet.
        // let's try writing a 0 to test it
       writer.Write((uint)0);
    }
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the problem the calc'ing flags (at this point) is we inserted 0s for anything that didn't have data, i could see in at least some instances where you both needed the flag set and wanted to send the 0.

if (value != null)
AceObjectPropertiesInt.Find(x => x.IntPropertyId == (uint)PropertyInt.MaterialType).PropertyValue = (byte)value;
else
if (listItem != null)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when the "else" is more than 1 line, as in this case, you need to use "{" "}" brackets. that, and the "if" path needs indentation. Pro tip: Ctrl+K, Ctrl+D to autoformat an entire file (don't do this in aligned enums tho)

@@ -60,7 +60,7 @@ public Door(AceObject aceO)
aceO.AnimationOverrides.ForEach(ao => this.ModelData.AddModel(ao.Index, ao.AnimationId));
aceO.TextureOverrides.ForEach(to => this.ModelData.AddTexture(to.Index, to.OldId, to.NewId));
aceO.PaletteOverrides.ForEach(po => this.ModelData.AddPalette(po.SubPaletteId, po.Offset, po.Length));
this.ModelData.PaletteGuid = aceO.PaletteId;
this.ModelData.PaletteGuid = (uint)aceO.PaletteId;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

red flag for data type problems. smells like packed Dword territory.


namespace ACE.Entity
{
/// <summary>
/// GameData - which of these items get written out is controled by DescriptionFlags
/// </summary>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// TODO: replace with exiting data in AceObject rather than copying it to this object

@@ -11,13 +11,13 @@ namespace ACE.Entity
/// </summary>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/// TODO: convert to using AceObject backed data and get rid of the redundant copies of all the datum.

if (modelPalettes.Count > 0)
writer.WritePackedDwordOfKnownType(PaletteGuid, 0x4000000);
if ((modelPalettes.Count > 0) && (PaletteGuid != null))
writer.WritePackedDwordOfKnownType((uint)PaletteGuid, 0x4000000);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// TODO: create PackedDwordType enum with constant values for offsets.

@@ -160,101 +160,101 @@ public virtual void SerializeCreateObject(BinaryWriter writer)
if ((WeenieFlags & WeenieHeaderFlag.PuralName) != 0)
writer.WriteString16L(GameData.NamePlural);

if ((WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0)
writer.Write(GameData.ItemCapacity);
if (((WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0) && GameData.ItemCapacity != null)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll have to apply this to all of these. The basic issue is that we have flags that are set in bulk. Flags should be calculated based on the presence and absence of data, not arbitrarily set and then validated after being written.

if ((WeenieFlags & WeenieHeaderFlag.ItemCapacity) != 0)
{
    if (GameData.ItemCapacity != null)
    {
        // write out items
    }
    else
    {
        // we wrote the flag in the header, failing to write at least SOMETHIGN will cause the client to barf on the packet.
        // let's try writing a 0 to test it
       writer.Write((uint)0);
    }
}

@@ -29,7 +29,7 @@ public enum WeenieHeaderFlag : uint
BlipColour = 0x00100000,
Burden = 0x00200000,
Spell = 0x00400000,
Radar = 0x00800000,
RadarBehavior = 0x00800000,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whitespace

ogmage78 and others added 3 commits May 16, 2017 17:06
…Still work to make baseAceObject and AceObject on thing / finish work around workmanship and actually kick the tires and start pulling data. Sorry this is taking so long.
…loading data. I created the workmanship hackery we discussed. As always comments and suggestions much appreciated.
@ogmage78 ogmage78 changed the title Review and Comment - Object overhaul - continued Now loading partial data! - Review and Comment - Object overhaul - continued May 17, 2017
`modelTableId` int(10) unsigned NOT NULL,
`motionTableId` int(10) unsigned NOT NULL,
`physicsDescriptionFlag` int(10) unsigned NOT NULL,
`physicsScript` smallint(5) unsigned NOT NULL,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change to playScript

@LtRipley36706
Copy link
Member

perhaps its now safe and at the point to move everything over to normalize ace_world?

* Created mapping cross reference file to faciltate docuatation and cleaning up names - work in progress https://goo.gl/eaaNQb
* Created new database schema for world_object - modified mysqlinstall.bat to refect new baseline
* created script to ETL old schema to new schema.   I have not included it as we will be refactoring the initial data load to use the new
* schema according to Ripley.   I have the script tested and posted on my dropbox if anyone wants it.   I also have a complete data dump that
* zips down to a manageable size.
* BaseAceObject is now using the new schema
* I re-hooked up telepoi to use the new schema.   Still to do, convert to constructed statement
* Next steps - refactor AceObject and make sure world objects load again.
* Once that is complete - start same process using clone of this schema for character as discussed.
@ogmage78 ogmage78 changed the title Now loading partial data! - Review and Comment - Object overhaul - continued Object Overhaul - ready for review and merge. Still Work in Progress but a good spot. May 17, 2017
ogmage78 and others added 5 commits May 17, 2017 17:32
…nd - this creates a world object. Not quite there yet.
…l to do, renable constructed statements, clean up and re-enable the other constructed statements.
@Mogwai-TheFurry Mogwai-TheFurry merged commit 502bdb9 into ACEmulator:object-overhaul May 20, 2017
Mogwai-TheFurry added a commit that referenced this pull request Jun 16, 2017
* Object overhaul - clean up enums (#337)

* Give property enums a static value to aviod positional fubar later on.   Cleaned up using.

* Cleaning up enums

* Fixed Line ending update change log.

* Review & Comment only || Object overhaul - POC  (#339)

* Give property enums a static value to aviod positional fubar later on.   Cleaned up using.

* Cleaning up enums

* Fixed Line ending update change log.

* Added new positionType

* Started work on implementing object overhaul - want to make sure I am heading in the right direction.

* Minor clean up, responded to feedback and fixed a few bugs.   Thanks for the second and third set of eyes.

* Object Overhaul - ready for review and merge.    Still Work in Progress but a good spot. (#341)

* Give property enums a static value to aviod positional fubar later on.   Cleaned up using.

* Cleaning up enums

* Fixed Line ending update change log.

* Added new positionType

* Started work on implementing object overhaul - want to make sure I am heading in the right direction.

* Minor clean up, responded to feedback and fixed a few bugs.   Thanks for the second and third set of eyes.

* Continued work.   Please review as these are a LOT of manual changes.   Compiles and you can log in.

* Continued work.   I have all of the items pulling from properties now.   Still work to make baseAceObject and AceObject on thing / finish work around workmanship and actually kick the tires and start pulling data.   Sorry this is taking so long.

* Had time for a few more and cleaned up whitespace.

* Good point to check in.   All of the property tables are hooked up and loading data.   I created the workmanship hackery we discussed.   As always comments and suggestions much appreciated.

* One quick shot to fix appveyor before bed.

* * Continued work on Overhaul
* Created mapping cross reference file to faciltate docuatation and cleaning up names - work in progress https://goo.gl/eaaNQb
* Created new database schema for world_object - modified mysqlinstall.bat to refect new baseline
* created script to ETL old schema to new schema.   I have not included it as we will be refactoring the initial data load to use the new
* schema according to Ripley.   I have the script tested and posted on my dropbox if anyone wants it.   I also have a complete data dump that
* zips down to a manageable size.
* BaseAceObject is now using the new schema
* I re-hooked up telepoi to use the new schema.   Still to do, convert to constructed statement
* Next steps - refactor AceObject and make sure world objects load again.
* Once that is complete - start same process using clone of this schema for character as discussed.

* renabled more data loading.

* Continued work on hooking data back up.   Working on moveto debug command - this creates a world object.   Not quite there yet.

* WIP

* Making progress.   Test object able to be spwaned from new schema.   Still to do, renable constructed statements, clean up and re-enable the other constructed statements.

* updated worldbase

* * Intital work done for new schema.   Rebased and removed update sql files. (#353)

* Tested and the auto setting of Physics and Weenie Header Flags looks really solid.   Side note, the values we have
* in the database for weenieHeaderFlags and PhysicsDescriptionFlag should probably be dropped we don't read them or use them now.
* Doors, portals NPC's and signs are all back in the world now.
* I would suggest we remearge with the main branch sooner rather than later - we can create another branch to introduce these
* changes into the character side.
* TODO items:
* Creature spawns need to be refactored - I left them commented out.   We need to ditch seperate tables that we have now, I think all
* creature can use what we have now, plus maybe two additional world tables.   Everything else fits into the current schema.
* Test Ripley data and update ACE_World.
* Refactor portals - I just left the old way in and faked it out with a view.
* Once this looks good and stable and we fix any found bugs - we need to clone this over to the character database and start refactoring
* That will get us to persisted inventory.

* Objects - Game data refactored - issue with character login (#355)

* wip

* WIP - character login is trying to persist a world object

* Still throwing an exception on player login.

* Working Code - finished GameData - need to complete PhysicsData and ModelData.   Thanks to @Lidefeath for finding my issue.

* WIP compiles but has error on run.   Data changes have broken something.   Will fix tomorrow.

* Wip - nothing really working yet.   I can log in but item creation is not working.

* Objects (#357)

* wip

* WIP - character login is trying to persist a world object

* Still throwing an exception on player login.

* Working Code - finished GameData - need to complete PhysicsData and ModelData.   Thanks to @Lidefeath for finding my issue.

* WIP compiles but has error on run.   Data changes have broken something.   Will fix tomorrow.

* Wip - nothing really working yet.   I can log in but item creation is not working.

* Best attempt stabbed (#358)

* wip 1

* wip 2

* wip 3

* wip 3

* i think thats it for now.  good luck!

* Read cached characters and launch to char list (#360)

* First corrections and commenting out so the start to command line works

* The basics for launching to character list is working.

* Edit config.json for AppVeyor

* Rework Base SQL scripts. (#361)

Expect broken execution until views are corrected for ace_shard

* Cleaning up error list (#362)

Clearing stylecop issues and warnings in Error List

* ACE Enum adjustments (#363)

* More Enum Adjustments (#364)

* More Enum Adjustments

* Further Enum Refinement

* Changed Enum Value

* More Enum and Object Realignment (#365)

* Adding Enums to better align with AC standards. GroupTypeChat and AccessLevel will be converted to these.

* Object level changes to go with enum resorting

* Extend ORM to allow aggregate functions i.e. MAX(column) and (#366)

* Extend ORM to allow aggregate functions i.e. MAX(column) and implement GetNextCharacterId

* For AppVeyor, thanks @ogmage78 for the sql

* Implements IsCharacterNameAvailable and fixes some errors in the chargen code. (#367)

* Character Loading (#368)

* Cleaned up some whitespace issues.   Still understanding the direction.

* WIP added enums for PropertyAttribute

* Wip got a lot of aceCharacter done - working on position - about 1/2 done.

* WIP - Ace Character Loading.
* Intital work done for loading character from ace_shard.   Rebased and removed update sql files.
* Tested up to position loading.   Made changes to position, but have not loaded the dictionary yet.
* Fixed a few bugs - attribute loading had a few.
* TODO items:
* Finish up loading positions then see what is left.
* Work on saving as OptimShi - has character creation ready to go.

* Fixed for rebase and apveyor

* Hand wrote view per request and removed unneeded position.

* Read character creation values from client_portal.dat  (#369)

* Read character creation values from client_portal.dat and assign to appropriate Character Properties

* Added AceCharacter properties for the character appearance data

* More fun in Zombieland - character loading.    (#370)

* [Og II]
* Continued work loading character from ace_shard.   Rebased
* Added cascade delete to all child tables in ace_shard.
* Completed and tested up to skillz loading.   Made a few changes on the db side for key consistancy.
* TODO items:
* Finish up loading - spells, friends, allegiance info, spell comps, spell bars etc. etc....

* Fixed bug in setXXXProperty methods with the add new.   Was not setting the AceObjectId

* Fixed auto inc and unsealed position class and made aceObjectId virtual again.

* SaveObject implemented in ShardDatabase.cs (#371)

* First steps of SaveObject

* Hopefully I didn't bork anything too hard.

* Character creation -- data present on save appears to make its way to the DB.  Thanks to Lidefeath for the starter here.

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Cleanup of DbGetListAttribute (#372)

* First steps of SaveObject

* Hopefully I didn't bork anything too hard.

* Character creation -- data present on save appears to make its way to the DB.  Thanks to Lidefeath for the starter here.

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Reworked DbGetListAttribute, got rid of hacky code.

* Forgot to remove sloppy comments from refactoring.

* Create Database.cs

* Fix the "You do not own this character" error. (#373)

* Refactoring, save/restore progress on object overhaul (#375)

* First steps of SaveObject

* added todo

* Hopefully I didn't bork anything too hard.

* Character creation -- data present on save appears to make its way to the DB.  Thanks to Lidefeath for the starter here.

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Working on player login.   Getting closer.   At SendSelf in player.cs

* Reworked DbGetListAttribute, got rid of hacky code.

* Forgot to remove sloppy comments from refactoring.

* Create Database.cs

* Continued work on character login.   A little closer - we can get into the world now.   Please see change log for list of outstanding items.

* Can log in, and walk around.  Some properties still wrong.  Still need to submit several DB level fixes.

* Many fixups/bugfixes.

Positions now save.
Character logs in.
Game doesn't crash.
Can open multiple sessions.
(some) ORM issues fixed

Issues:
World Objects still don't appear in game.
Race found in ShardDatabase (commented)

* Minor cleanups.

* Object overhaul (#376)

* First steps of SaveObject

* added todo

* Hopefully I didn't bork anything too hard.

* Character creation -- data present on save appears to make its way to the DB.  Thanks to Lidefeath for the starter here.

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Removed all references to SaveCharacterOptions -- replace with SaveObject().

* Working on player login.   Getting closer.   At SendSelf in player.cs

* Reworked DbGetListAttribute, got rid of hacky code.

* Forgot to remove sloppy comments from refactoring.

* Create Database.cs

* Continued work on character login.   A little closer - we can get into the world now.   Please see change log for list of outstanding items.

* Can log in, and walk around.  Some properties still wrong.  Still need to submit several DB level fixes.

* Many fixups/bugfixes.

Positions now save.
Character logs in.
Game doesn't crash.
Can open multiple sessions.
(some) ORM issues fixed

Issues:
World Objects still don't appear in game.
Race found in ShardDatabase (commented)

* Properly load Data Id instances.  Objects now "spawn" in-world, but don't interact properly.

* Fixes to worldbase vw_teleport_location, player description, character handler.  Player now gets proper stats and can teleportpoi.  Vital inital values are off.

* Sets options on load.  May be bad/broken.  Need to seriously think how AceObject/AceCharacter and WorldObject/Player should interact.  We don't do that well now.

* Fix to attribute2nd, using uint24 instead of uint16 for value (because monster's health can get huuuge).

* Position refactor into backend object AceObjectPropertiesPosition and front-end object Position.

* * fixed issues with the weenieHeaderFlags setting method, fixed PhysicsDescriptionFlag setting issue as well.
* cleaned up and rebased data scripts for WorldBase and ShardBase
* Found issue in my data that was ETL to our new schema - had two flag fields Reversed - that is fixed but would be no issue
* once we have Ripley's new data export.   I have shared out a link to the cleaned up data for use while we finish the new export.
* https://www.dropbox.com/s/pohcruvalt9s38h/WorldandShardData.zip?dl=0
* I put in a nasty hack - hard coded weenieClassId on character save - it was being set to 0 and I could not find it.   I marked with with a todo.
* player.cs line 490

* Create Landblock.cs

* Updated changelog

* Fear the Walking Dead - More work on our object overhaul - bug fixes and continued work (#377)

* Testing - fixed a few null reference check errors.   Added in OptimShi player apperance code.

* added back code needed for ci

* Sending DataId and InstanceId data to character description.

* Forgot to update change log

* Added Ripley's changes to scheam

* Create ShardBase.sql

* Create WorldBase.sql

* Made requested changes

* Lord BucketHead - temp fix.   Added start of equipping items and POC code (#378)

* * Added getting and setting ContainerID and Wielder into AceObject and surfaced in worldObject
* Put in a hack to show how equiped weapons and shields work.   We will need to establish a place to store this data.
* I put in big TODO to indentify the hack - it is benign and will not impact anything else other than to demo the placement
* of the spear in Rand the Game Hunters hand in Holtburg.
* Modified SetPhysicsDescriptionFlags so it can be container and weilder aware.
* Worked with OptimShi and we put in a fix for Lord BucketHead.

* Found and fixed one more bug with hair styles

* Update Player.cs

removed comment that was out of date.

* SQL Scripts Re-based (#379)

* SQL Scripts Rebased

* More alignment of base DB script.

* Final SQL script rebase

* Code cleanup and a few bug fixes.   (#380)

* Code cleanup and a few bug fixes.   Working to trello card.   Board updated.

* Added first part of wield item.

* Update to remove class diagram

* Update GameActionGetAndWieldItem.cs

* Update GameEventWieldItem.cs

* Fixed Position Saving. (#381)

* Fixed Position Saving.

* Fixed other minor character initialization bugs

* Cleanup backing AceObject (#382)

* Reworked AceObject/Player/WorldObject to better repsect AceObject as a unit backing.

* Enough cleanup to commit.  Fixed vitals (Attribute2nd) in the process.

* Fixed bad rebase errors.  Appears to work now.  Can confirm vitals (Attribute2nds) initialize well, and can be raised.

* Fixed bug with player creation and made a bunch of comments and notes about things I discovered so they would not get lost. (#383)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants