Skip to content

Commit

Permalink
Hybrasyl Server 0.7.0 (#173)
Browse files Browse the repository at this point in the history
* Fix issue #140 - ensure port check is correct (zero, not == null)

* Minor bug fixes to casting

- Item cost not being calculated correctly
- Damage / Heal updated to reflect the new method previously created "IsEmpty" rather than evaluating based on Null condition

* Minor adjustment to cost eval

If reduceHp is greater or equal to current HP, then should fail as this would reduce caster HP to zero (aka death).

MP however, can be reduced to 0.

* Fix #144: Status duration calculated incorrectly

Fix #143: Statuses not working under certain XML conditions / clean up XML definitions

Fix #130: Can't assail without casting a spell first

* Fix #138: use active users for who list (#141)

Ensure server processes shutdown command successfully AND responds successfully via REST

* Minor bug fixes to casting (#142)

* Minor bug fixes to casting

- Item cost not being calculated correctly
- Damage / Heal updated to reflect the new method previously created "IsEmpty" rather than evaluating based on Null condition

* Minor adjustment to cost eval

If reduceHp is greater or equal to current HP, then should fail as this would reduce caster HP to zero (aka death).

MP however, can be reduced to 0.

* Fix #144: Status duration calculated incorrectly

Fix #143: Statuses not working under certain XML conditions / clean up XML definitions

Fix #130: Can't assail without casting a spell first

* Minor XSD bug

All others are maxOccurs = 1, so I have assumed the same for this element.

* Fix status serialization / inappropriate sound effects (#147)

* Minor bug fixes to casting

- Item cost not being calculated correctly
- Damage / Heal updated to reflect the new method previously created "IsEmpty" rather than evaluating based on Null condition

* Minor adjustment to cost eval

If reduceHp is greater or equal to current HP, then should fail as this would reduce caster HP to zero (aka death).

MP however, can be reduced to 0.

* Fix #144: Status duration calculated incorrectly

Fix #143: Statuses not working under certain XML conditions / clean up XML definitions

Fix #130: Can't assail without casting a spell first

* Fix #146: Statuses do not persist correctly after logoff

Fix #127: Statuses play incorrect sound / play incorrect sounds repeatedly on tick
y

* Address some PR comments

* remove spurious whitespace, move Casting set to inside UseCastable

* update naming

* Castable XSD: add back optionality

* allow statuses to be serialized better, and in all cases (process formulas once on creation)

* Don't display effects for deserialized statuses

* add tick default of 1, to make things saner/easier

* Add operator support to lockables (for +=, -=, *= usage)

* refactor how we apply / serialize statuses; simplify and avoid issues due to cleverness

* ensure classes are capitalized and also /class doesn't hassle you

* Update README.md

* Update README.md

* Ensure we redisplay equipment correctly on login (#129) (#157)

* initial pass to replace nLua with moonscript

* remove vestigial scripting code

* initial pass to replace nLua with moonscript (#159)

* initial pass to replace nLua with moonscript

* remove vestigial scripting code

* Full implementation of reactors

* Implement spawning in scripts (and therefore from reactors)

* update CHANGELOG

* format fixes

* fffff

* fffff

* fffff

* Implement JumpDialog, FunctionDialog, Lua callbacks for text/option dialogs; Reload NPC / clear cookie slash commands; rename UserFlags->UserCookies / UserSessionCookies; improve script handling

* Remove binaryformatter (unneeded)

Redo time slightly to simplify / base on terran time

Simplify Redis extensions

Support for adding chrysalis mark

Scripting fixes / new functions

* bump version to 0.6.2; add TBD release information / changelog

* Fixes to packet structure for merchants

* Upgrade to .net core 2.2

* Fix for log4net in .net core 2.2

* Remove windows specific console settings

* check in changes

* update readme (#165)

* update readme

* Update README.md

* Scripting updates & fixes roundup - August 2019 (#166)

* scripting: ensure each script is a singular instance; fix case where we are missing xml for login maps

* sanitize WorldData store keys; fix handling for global scripted dialogs

* use normalized keys for worldstore/inventory items; SHA hashes for inventory item in json

* make scripts use same normalize function

* address PR concerns

* Serilog & scripting updates (#167)

* Remove log4net and replace with Serilog.

* Begin cleanup of logging. Logs now go to separate files in `./logs` in the data directory, and
  only general logs appear in the console. Over time more logging statements will be updated
  to use Serilog's structured property format.
* Add globally accessible logger `GameLog` with shims for converting existing log4net log
  lines, and adding new log support for Serilog.
* Hybrasyl now shuts down correctly (and logs shutdown) when you close its console window,
  as opposed to just terminating instantly.
* Re-add missing assembly info.
* Fix some extremely subtle bugs related to Dialog / DialogSequences that surfaced from
  scripting (associate set incorrectly; jumpdialogs not always working)
* After we process a dialog option - stop further processing of the dialog packet.
  This fixes a number of strange bugs when navigating through dialogs.

* Scripting API / dialog updates (#169)

* * Add convenience functions for dialog generation (NewTextAndJumpDialog, NewSimpleDialogSequence)
* Add support to transition between two active dialog sequences
* Add support for dialog options to trigger new sequences
* Implement TakeItem for scripts, so that NPCs can remove items from a player's inventory
* Fix showcookies command
* Implement ClearCookie / ClearSessionCookie commands for clearing permanent / session cookies
* Implement ephemeral store support for all WorldObjects
* Add utility class for Scripting API for a number of convenience functions
* Implement FindItem convenience function in WorldDataStore
* Bug: EndDialog scripting function should not only end dialog, but also close open dialog windows

* Add support for setting and clearing permanent and session cookies

* February 2020 updates (#170)

* * Add convenience functions for dialog generation (NewTextAndJumpDialog, NewSimpleDialogSequence)
* Add support to transition between two active dialog sequences
* Add support for dialog options to trigger new sequences
* Implement TakeItem for scripts, so that NPCs can remove items from a player's inventory
* Fix showcookies command
* Implement ClearCookie / ClearSessionCookie commands for clearing permanent / session cookies
* Implement ephemeral store support for all WorldObjects
* Add utility class for Scripting API for a number of convenience functions
* Implement FindItem convenience function in WorldDataStore
* Bug: EndDialog scripting function should not only end dialog, but also close open dialog windows

* Add support for setting and clearing permanent and session cookies

* wefgjuiergjeuri

* Update XSDs: use XSD2Code 5, add AllowDead to reactors / npcs (whether or not to work for ghosts)

Add asynchronous dialog support

Allow dialogs & scripts to use "this_script" to reference themselves

Add templating support to async dialogs

Add spawn activity logs

Add slash command to support clearing dialog state

Add castable scripting support

Correct bug in spawn calculations where it would take longer for initial spawns to populate than usual

Make spawn thread run faster and more often

Correct effect checks for castables

Implement dialog/sequence level support for globally registered and stored dialogs

Improve scripting and castable support for arbitrarily assigned objects (async / global dialog)

Add MultiIndexDictionary for id / name search for dialog sequences

Properly check casting / board usage / etc for dialog sequences & async dialog requests

* Clean up XML/XSD object model, schemas, etc; unify types and enums

* Ensure optional fields stay null in XSD after updates

Extend statuses to include OnExpire as a separate path for effects (Coma now uses this rather than a hack)

Allow statuses to specify target/source and a script or builtin function for effect handling

Implement status script / builtin function handling

Spawn threads now run faster

Mob death: don't create 0-gold piles

Fix several bugs in grouping

Refactor level up code to be clearer / DRY

Fix handling of Coma in groups (e.g. works now)

* remove sanity check from metafiles

* fix inadvertent removal

* update copyright notices

* change mp/hp bonus on lvup to be closer to current reality

* Loot and lootset implementation (#171)

* lootbox additions; testing

* more goddamn XML/XSD changes

* move to singular namespace; break up objects; fix multiple XSD namespace/scoping issues

* update XML, again

* update signpost structure; remove XML validators (#172)

* update signpost structure; remove validators as they were causing issues with multiple types

* remove cruft

* remove all examples; update changelog/readme; add systemd unit file

* update to .NET Core 3.1; signboard fixes

* readme updates

* add .net core instructions

* more readme updates

* * Add <motd> to server config XSD (#174)

* Clean up various exit handlers
* Add missing forget spell handler
* Remove config file creation, point users to community repo instead

* * Add spawn debug commands (#175)

* Fix several bugs in loot calculations
* Fix null reference exceptions in loot calculations / mob death
* Optimize monster spawn calculations, increase mob responsiveness
* Fix bug where low-powered variance would cause unhandled exceptions
* Ensure item variants specified in loot drop and serialize correctly

* Refine handling of moon (there is no 0th moon) (#177)

* * Address #153, and clean up unused types (#176)

y

* fix display issue where picked up items don't vanish on client side (#179)

* fix mp/hp calculation on levelup; buff gains

* add encryption options (#180)

* add encryption checkery (#181)

* update xsd to account for endpoints, add encrytion retreviebalkjfeugb

* fixes for merge issues

Co-authored-by: Cameron Moseley <cmoseley@gmail.com>
Co-authored-by: Cameron Moseley <33741983+moseleyc@users.noreply.github.com>
Co-authored-by: Michael Norris <16417541+norrismiv@users.noreply.github.com>
Co-authored-by: Michael Norris <norrismiv@gmail.com>
  • Loading branch information
5 people committed Apr 24, 2020
1 parent d77fead commit 8fe2611
Show file tree
Hide file tree
Showing 327 changed files with 48,582 additions and 19,039 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ bld/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
*/.vs/*
.vs
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

Expand Down
8 changes: 0 additions & 8 deletions .vs/VSWorkspaceState.json

This file was deleted.

Binary file removed .vs/slnx.sqlite
Binary file not shown.
66 changes: 57 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,69 @@
generally add fairly significant features, whereas ones without are primarily
for bugfixing and other updates.*

# Hybrasyl Server 0.7.0 ("Daithi")

*To Be Released: March 15, 2020*

### Bug Fixes

* Items that are generated by scripting or other events can now be picked up correctly.
* Coma handling in groups now works as you would expect.
* Creature death no longer results in 0-gold piles.
* EndDialog scripting function should not only end dialog, but also close open dialog windows
* Correct bug in spawn calculations where it would take longer for initial spawns to populate than usual
* Fix several bugs in grouping (player death would be immediate, etc)
* Fix a number of dialog and NPC bugs (sequences would terminate inappropriately; NPC would lose state)

### Features

* Reactors (map tiles that can react to nearby events, such as dropped
items or a player or monster moving into the tile) implemented.
* Full spawning implementation. SpawnGroups, Spawns now spawn and populate correctly with loot/xp/gold.
* Loot implemented (Loot tables, loot sets, etc). New `LootBox` class for handling loot calculations.
* Castables can now use and fire Lua scripts and start dialog sequences.
* JumpDialogs and FunctionDialogs added. Jump dialogs can be used in
an NPC dialog tree to start new sequences or jump to different
dialogs. Function dialogs can be used to run arbitrary Lua scripting
code in between two dialogs (potentially to take an action - such as
spawning a monster, dropping an item, starting a dialog, etc).
* Add two new dialog types for ease of scriptable dialog construction (TextAndJump, SimpleDialogSequence)
* Asynchronous dialog support (dialogs between two players, or a player and an NPC) implemented.
* Global dialog support implemented (reusable, scriptable dialogs)
* Scripting support improved and extended as was needed to support various beginning game NPCs.
* Hybrasyl time system reworked a bit (simplified). Legend marks
updated to support "timestamp" and "creation" date; timestamp being
what is displayed in the legend.
* Significant functionality improvements to scripting API. NPCs can now have temporary "memory" they can use to remember general information.
* Add support to transition between two active dialog sequences.
* Add support for dialog options to trigger new sequences.
* Implement TakeItem for scripts, so that NPCs can remove items from a player's inventory
* Add support for setting and clearing permanent and session cookies (arbitrary player information which can be used by scripts).
* XML/XSD overhaul. Duplicate types removed, many things cleaned up & fixed. XML objects and typing are in a much better, cleaner state than previously. No impact to end user XML besides some namespacing changes.

### Technology / System Improvements

* Hybrasyl upgraded to .NET Core. As a result, Hybrasyl Server can now run on GNU/Linux and OSX, among others.
* MoonScript now used for Lua runtime instead of nLua.
* Serilog now used for logging (log4net replaced). Logging is now much cleaner. Game activity / scripting / spawning now have separate logfiles.
* Upgrade to xsd2code 5.


# Hybrasyl Server 0.6.1

*Released: March 4, 2018* - [View this release on GitHub](https://github.com/hybrasyl/server/releases/tag/0.6.1)

### Bug Fixes

[Fixed] #129: Staves / rings displayed incorrectly after relogging
[Fixed] #130: Can't assail without casting a spell first
[Fixed] #138: Who list shows users who are not logged in
[Fixed] #140: Server start error due to incorrect port numbers for control service
[Fixed] #142: Minor bug fixes to casting
[Fixed] #143: Statuses not working under certain XML conditions / clean up XML definitions
[Fixed] #144: Status duration calculated incorrectly
[Fixed] #146: Statuses cannot be serialized
[Fixed] #147: Inappropriate sound effects played for statuses which have no sound effects
[Fixed] #129: Staves / rings displayed incorrectly after relogging
[Fixed] #130: Can't assail without casting a spell first
[Fixed] #138: Who list shows users who are not logged in
[Fixed] #140: Server start error due to incorrect port numbers for control service
[Fixed] #142: Minor bug fixes to casting
[Fixed] #143: Statuses not working under certain XML conditions / clean up XML definitions
[Fixed] #144: Status duration calculated incorrectly
[Fixed] #146: Statuses cannot be serialized
[Fixed] #147: Inappropriate sound effects played for statuses which have no sound effects

# Hybrasyl Server 0.6.0 ("Bruce")

Expand Down
31 changes: 31 additions & 0 deletions Hybrasyl.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29001.49
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hybrasyl", "Hybrasyl\Hybrasyl.csproj", "{62750A08-502D-41E2-A08F-177D45161D07}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XML", "XML\XML.csproj", "{0B5276B1-BE53-4CB2-9C68-5EBBB5624631}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{62750A08-502D-41E2-A08F-177D45161D07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62750A08-502D-41E2-A08F-177D45161D07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62750A08-502D-41E2-A08F-177D45161D07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62750A08-502D-41E2-A08F-177D45161D07}.Release|Any CPU.Build.0 = Release|Any CPU
{0B5276B1-BE53-4CB2-9C68-5EBBB5624631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B5276B1-BE53-4CB2-9C68-5EBBB5624631}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0B5276B1-BE53-4CB2-9C68-5EBBB5624631}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B5276B1-BE53-4CB2-9C68-5EBBB5624631}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {34D59115-B12B-46E8-BF9A-81C2FB2DD399}
EndGlobalSection
EndGlobal
46 changes: 0 additions & 46 deletions HybrasylXML/XML/Node.cs

This file was deleted.

0 comments on commit 8fe2611

Please sign in to comment.