Code Monkey home page Code Monkey logo

freescape_jvm's Introduction

This project is no longer being maintained. The code has been converted over to C#. You can find the new repo here: https://github.com/zunath/Freescape

Freescape_JVM

Server-side Java code used in the Neverwinter Nights Freescape module.

Game: Neverwinter Nights: Enhanced Edition

Website: TBA

Discord: https://discord.gg/q38r3gw

Project Description

This project contains the Java source code used on the Freescape server.

It serves as a replacement for NWScript and handles most server features and functions. This is possible by using the NWNX_JVM plugin for NWNX.

Refer to the quick start guide below and be sure to post any issues on our forums. The link to the forums is above.

Quick-start guide for Freescape server developers

1.) Install Git from here: https://git-scm.com/downloads

2.) Install IntelliJ Community Edition (NOT Ultimate!) from here: https://www.jetbrains.com/idea/download/

3.) Start up IntelliJ

4.) Click the "Check out from Version Control" option.

5.) Select GitHub

6.) Enter in the following:

Git Repository URL: https://github.com/zunath/Freescape_JVM.git

Parent Directory: Select a location on your hard drive where you want to store your projects or leave it as the default.

Directory Name: Freescape_JVM

7.) Click Clone and wait until it finishes downloading the files.

8.) IntelliJ will load the project automatically.

Hosting Dependencies

1.) Neverwinter Nights: Enhanced Edition Server Files

2.) Linux OS

3.) NWNX + the following plugins: Chat, Creature, Events, JVM, Object, Player

4.) OpenJDK 8 JRE

5.) Microsoft SQL Server 2017

Using Docker

I highly recommend using Docker to speed up development time. You can read about how to use it for NWN:EE here: https://hub.docker.com/r/nwnxee/nwserver/

It'll take care of hosting dependencies #1-#4. You only need to set up the SQL Server database at that point.

Getting Help

If you need help with anything related to Freescape please feel free to contact us on our Discord.

For NWNX and Docker related issues please look for help in the NWNX Discord channel here: https://discord.gg/m2hJPDE

freescape_jvm's People

Contributors

zunath avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

freescape_jvm's Issues

Exploration trigger throwing exception

One of the exploration triggers with the following text is misconfigured:

Before you stands an ancient building. Though time and whatever plagues these lands have taken its toll it appear to be safe to enter.

The text is in place of the java script variable. This needs to be fixed so that it'll display properly in game.

Trees aren't dropping seeds on death

Currently seeds only drop when you have the perk. This should be changed to drop seeds every time the tree dies with a second set of seeds dropping based on the perk level.

Maple Trees - Ankolia Desert

The maple trees in Ankolia Desert aren't using the proper scripts. Plus the entire tree is usable, instead of the invisible object. Might be that there are multiple maple tree placeables in the module.

I noticed they have maple syrup - we should probably look into acquiring that using the proper tools and integrate it into the existing resource gathering scripts.

Combat XP calculation changes

1.) Change the XP calculation to use CR instead of our custom Difficulty Rating value. (Remove that flag from the DB)
2.) Use a baseline of 1 CR = 400 XP
3.) The XP should decrease over time as players get stronger.
4.) The module should have a global XP adjustment which is a percent change on all XP gains. If this is not set (or set <= 0) the default should be 1.0

We may need to do some math to calculate the overall level of a player based on their skill levels & perks to determine their own CR.

Reorganize Perk Categories

I think I made too many perk categories. Slim them down so that stuff like "Metalworking - Blueprints" and "Metalworking - General" are merged into a "Metalworking" category.

Barley - Missing item

The grain_barley item is missing or I have the wrong resref. Need to add the item or update the DB to use the correct resref.

Description trigger gui_prompt sound

The exploration description trigger need to play the sound "gui_prompt" when triggered.

Idea: Maybe a single exclamation mark "!" should float over the character when they are triggered too.

Set up respawn system

Don't currently have respawn points. The system is currently set up to bind players to "Mysterious Obelisks" they touch. Maybe these are hand placed as well as craftable by players?

New Player Item Changes

  • Give a basic hammer with max 5 durability to new players
  • Set max durability of the survival knife to 5

Skinnable / Lootable corpses

All enemies leave behind a lootable corpse.

Those creatures marked as "Skinnable" (local variable on the creature) will be able to be skinned by players with the proper tools.

Skinning should use the Survival skill for its checks and XP gains.

Fix the waypoints for some transitions

Have the player face the right way and spawn the right place when using area transitions. Not a gamebreaking issue but makes the experience more clean.

List of transitions that need a facelift.

  • Fordania West Lake to Fordania Plains Shelter

XP Tomes

Create items which do the following when used:

  • Open conversation for player with a list of skills to select from.
  • Player selects a skill
  • Player confirms they want to gain XP for this skill.
  • XP Tome is destroyed
  • Player is given the amount of XP assigned to the tome (via local variable) in the skill of their choice.

These books should be used as quest rewards as well as DM event rewards. There should be books of varying amounts of XP:

Minor Tome of Skill Experience: 100 XP
Lesser Tome of Skill Experience: 200 XP
Tome of Skill Experience: 300 XP
Greater Tome of Skill Experience: 400 XP

Add "Special" and "Vanity" slots to structure territories

In CZS, lots of players tend to only build structures that are useful to them since they're capped at the maximum number of structures a territory flag can support. This means a lot of the vanity blueprints go unused because players don't want to "waste" a slot on them.

To fix this problem, we should have two separate categories for territories. The first is "Vanity" which are for all of the structures which simply exist for RP purposes. This should be a high number to allow as much customization as possible.

The second category is "Special" which includes crafting devices, persistent chests, and so on. Anything which has a useful gameplay benefit should fall under this category. This should be a much lower number than the Vanity category.

Add Player Buildings to construction

  • Need to be able to specify the exterior of the house as well as the interior.
  • Player needs a way to preview the interior before committing to building it.
  • Need a way for players to specify who may enter each individual building.
  • Limit buildings to higher tier territory flags.

Add torches to woodworking

Add a low level blueprint for making torches to the woodworking craft.

Torches should be destroyed after a certain amount of time of use.

Trees stay after gathering node is destroyed

Actually i think it would be fine to just make the the tree objects themselves be the object you bash and destroy. The effects are all there and it makes it easier to build the module when you can actually see the object you're working with. I know you've experience playerwhining but it works on many servers :)

Give starting dagger to players

Fresh players don't have a weapon to gather wood/ore with. Need to give them a dagger at character creation that's undroppable.

Additionally, we should give them the option to destroy the dagger via usage (with confirmation via dialog).

Add OOC Starting area

We need to add an OOC starting area which will be used for both entering the game as well as loading players' last saved location.

The tag/resref of this area should be ooc_area

Pull SOO's animal faction into Freescape

Solar Odyssey Online (one of my prior modules) had an animal faction which allowed players to attack members of a certain faction without making the rest of the faction hostile. We want the same thing for Freescape.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.