Refactoring and comments.

This commit is contained in:
Raktbastr 2026-05-15 16:18:51 -05:00
parent 7f821d7723
commit 05a97e072a
18 changed files with 333 additions and 277 deletions

7
.idea/dictionaries/project.xml generated Normal file
View file

@ -0,0 +1,7 @@
<component name="ProjectDictionaryState">
<dictionary name="project">
<words>
<w>Stimpak</w>
</words>
</dictionary>
</component>

View file

@ -0,0 +1,47 @@
package net.halfheart.lonesomeroad;
import net.halfheart.ventricleengine.objects.*;
import net.halfheart.ventricleengine.WeaponsHandler;
import net.halfheart.ventricleengine.ArmorsHandler;
import net.halfheart.ventricleengine.AidModifierHandler;
import net.halfheart.ventricleengine.ItemsHandler;
import net.halfheart.ventricleengine.PlayerHandler;
public record ID() {
public static Weapon FISTS = WeaponsHandler.constructWeapon("Fists");
public static Weapon COMBATKNIFE = WeaponsHandler.constructWeapon("Combat Knife");
public static Weapon RIPPER = WeaponsHandler.constructWeapon("Ripper");
public static Weapon CHAINSAW = WeaponsHandler.constructWeapon("Chainsaw");
public static Weapon BASEBALLBAT = WeaponsHandler.constructWeapon("Baseball Bat");
public static Weapon POWERFIST = WeaponsHandler.constructWeapon("Power Fist");
public static Weapon SUPERSLEDGE = WeaponsHandler.constructWeapon("Super Sledge");
public static Weapon PISTOL10MM = WeaponsHandler.constructWeapon("10mm Pistol");
public static Weapon HUNTINGRIFLE = WeaponsHandler.constructWeapon("Hunting Rifle");
public static Armor NOTHING = ArmorsHandler.constructArmor("Nothing");
public static Armor LEATHERARMOR = ArmorsHandler.constructArmor("Leather Armor");
public static Armor STURDYLEATHERARMOR = ArmorsHandler.constructArmor("Sturdy Leather Armor");
public static Armor RAIDERARMOR = ArmorsHandler.constructArmor("Raider Armor");
public static Armor METALARMOR = ArmorsHandler.constructArmor("Metal Armor");
public static Armor COMBATARMOR = ArmorsHandler.constructArmor("Combat Armor");
public static Armor CENTURIONARMOR = ArmorsHandler.constructArmor("Centurion Armor");
public static Armor NCRRANGERARMOR = ArmorsHandler.constructArmor("NCR Ranger Armor");
public static Armor T45POWERARMOR = ArmorsHandler.constructArmor("T-45 Power Armor");
public static Armor T60POWERARMOR = ArmorsHandler.constructArmor("T-60 Power Armor");
public static Armor T65POWERARMOR = ArmorsHandler.constructArmor("T-65 Power Armor");
public static Armor X01POWERARMOR = ArmorsHandler.constructArmor("X-01 Power Armor");
public static Armor APAMKIORPOWERARMOR = ArmorsHandler.constructArmor("APA MkI Power Armor");
public static Armor APAMKIIPOWERARMOR = ArmorsHandler.constructArmor("APA MkII Power Armor");
public static Armor RAIDERPOWERARMOR = ArmorsHandler.constructArmor("Raider Power Armor");
public static Armor ULTRACITEPOWERARMOR = ArmorsHandler.constructArmor("Ultracite Power Armor");
public static Armor T51POWERARMOR = ArmorsHandler.constructArmor("T-51 Power Armor");
public static Armor ENCLAVEUNIFORM = ArmorsHandler.constructArmor("Enclave Uniform");
public static Armor EXCAVATORPOWERARMOR = ArmorsHandler.constructArmor("Excavator Power Armor");
public static Player PLAYER = PlayerHandler.constructPlayer("none");
public static Item STIMPAK = ItemsHandler.constructItem("Stimpak");
public static AidModifier STIMPAK_M = AidModifierHandler.constructAidModifier("Stimpak");
}

View file

@ -1,18 +0,0 @@
package net.halfheart.ventricleengine;
public class AidModifier {
String name;
String stat;
String mod;
short value;
int duration;
public AidModifier(String name, String stat, String mod, short value, int duration) {
this.name = name;
this.stat = stat;
this.mod = mod;
this.value = value;
this.duration = duration;
}
}

View file

@ -1,8 +1,8 @@
package net.halfheart.ventricleengine;
import net.halfheart.ventricleengine.objects.AidModifier;
import net.halfheart.lonesomeroad.ID;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@ -12,7 +12,8 @@ import java.util.Objects;
import java.util.stream.Collectors;
public class AidModifierHandler {
private static AidModifier constructAidModifier(String aidModifierName) {
// Creates AidModifier object by parsing JSON
public static AidModifier constructAidModifier(String aidModifierName) {
String filename = "/aid_modifiers.json";
try (InputStream inputStream = WeaponsHandler.class.getResourceAsStream(filename)) {
String jsonText = new BufferedReader(
@ -34,22 +35,35 @@ public class AidModifierHandler {
String stat = wantedItem.opt("stat").toString();
String mod = wantedItem.opt("mod").toString();
short value = (short) wantedItem.opt("value");
int duration = (int) wantedItem.opt("duration");
return new AidModifier(name, stat, mod, value, duration);
return new AidModifier(name, stat, mod, value);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
// Applies requested aid modifier to player
public static void applyAid(AidModifier modifier) {
if (modifier.stat.equals("hp")) {
char action = modifier.mod.charAt(0);
switch (action) {
case '+' -> PlayerHandler.PLAYER.hp = (short) (PlayerHandler.PLAYER.hp + modifier.value);
case '+' -> ID.PLAYER.hp = (short) (ID.PLAYER.hp + modifier.value);
}
}
}
public static AidModifier STIMPAK = constructAidModifier("Stimpak");
// Removes requested aid modifier from player
public static void removeAid(AidModifier modifier) {
if (modifier.name.equals("Stimpak")) {
System.out.println("Invalid Operation: Tried to remove Stimpak modifier from player");
}
}
// Returns aidModifier from String of name
public static AidModifier findAid(String aidModifierName) {
return switch (aidModifierName) {
case "Stimpak" -> ID.STIMPAK_M;
default -> null;
};
}
}

View file

@ -1,32 +0,0 @@
package net.halfheart.ventricleengine;
import java.util.List;
public class Armor {
String name;
String description;
String resType;
List<Byte> resistances;
String resUnit;
short cost;
byte weight;
public Armor(
String name,
String description,
String resType,
List<Byte> resistances,
String resUnit,
short cost,
byte weight
)
{
this.name = name;
this.description = description;
this.resType = resType;
this.resistances = resistances;
this.resUnit = resUnit;
this.cost = cost;
this.weight = weight;
}
}

View file

@ -1,4 +1,6 @@
package net.halfheart.ventricleengine;
import net.halfheart.ventricleengine.objects.Armor;
import net.halfheart.lonesomeroad.ID;
import org.json.*;
import java.io.BufferedReader;
@ -12,7 +14,8 @@ import java.util.Objects;
import java.util.stream.Collectors;
public class ArmorsHandler {
private static Armor constructArmor(String armorName) {
// Creates Armor object by parsing JSON
public static Armor constructArmor(String armorName) {
String filename = "/armors.json";
try (InputStream inputStream = WeaponsHandler.class.getResourceAsStream(filename)) {
String jsonText = new BufferedReader(
@ -49,48 +52,29 @@ public class ArmorsHandler {
}
}
// Returns Armor from String of name
public static Armor findArmor(String armorName) {
return switch (armorName) {
case "Nothing" -> NOTHING;
case "Leather Armor" -> LEATHERARMOR;
case "Sturdy Leather Armor" -> STURDYLEATHERARMOR;
case "Raider Armor" -> RAIDERARMOR;
case "Metal Armor" -> METALARMOR;
case "Combat Armor" -> COMBATARMOR;
case "Centurion Armor" -> CENTURIONARMOR;
case "NCR Ranger Armor" -> NCRRANGERARMOR;
case "T-45 Power Armor" -> T45POWERARMOR;
case "T-60 Power Armor" -> T60POWERARMOR;
case "T-65 Power Armor" -> T65POWERARMOR;
case "X-01 Power Armor" -> X01POWERARMOR;
case "APA MkI Power Armor" -> APAMKIORPOWERARMOR;
case "APA MkII Power Armor" -> APAMKIIPOWERARMOR;
case "Raider Power Armor" -> RAIDERPOWERARMOR;
case "Ultracite Power Armor" -> ULTRACITEPOWERARMOR;
case "T-51 Power Armor" -> T51POWERARMOR;
case "Enclave Uniform" -> ENCLAVEUNIFORM;
case "Excavator Power Armor" -> EXCAVATORPOWERARMOR;
case "Nothing" -> ID.NOTHING;
case "Leather Armor" -> ID.LEATHERARMOR;
case "Sturdy Leather Armor" -> ID.STURDYLEATHERARMOR;
case "Raider Armor" -> ID.RAIDERARMOR;
case "Metal Armor" -> ID.METALARMOR;
case "Combat Armor" -> ID.COMBATARMOR;
case "Centurion Armor" -> ID.CENTURIONARMOR;
case "NCR Ranger Armor" -> ID.NCRRANGERARMOR;
case "T-45 Power Armor" -> ID.T45POWERARMOR;
case "T-60 Power Armor" -> ID.T60POWERARMOR;
case "T-65 Power Armor" -> ID.T65POWERARMOR;
case "X-01 Power Armor" -> ID.X01POWERARMOR;
case "APA MkI Power Armor" -> ID.APAMKIORPOWERARMOR;
case "APA MkII Power Armor" -> ID.APAMKIIPOWERARMOR;
case "Raider Power Armor" -> ID.RAIDERPOWERARMOR;
case "Ultracite Power Armor" -> ID.ULTRACITEPOWERARMOR;
case "T-51 Power Armor" -> ID.T51POWERARMOR;
case "Enclave Uniform" -> ID.ENCLAVEUNIFORM;
case "Excavator Power Armor" -> ID.EXCAVATORPOWERARMOR;
default -> null;
};
}
public static Armor NOTHING = constructArmor("Nothing");
public static Armor LEATHERARMOR = constructArmor("Leather Armor");
public static Armor STURDYLEATHERARMOR = constructArmor("Sturdy Leather Armor");
public static Armor RAIDERARMOR = constructArmor("Raider Armor");
public static Armor METALARMOR = constructArmor("Metal Armor");
public static Armor COMBATARMOR = constructArmor("Combat Armor");
public static Armor CENTURIONARMOR = constructArmor("Centurion Armor");
public static Armor NCRRANGERARMOR = constructArmor("NCR Ranger Armor");
public static Armor T45POWERARMOR = constructArmor("T-45 Power Armor");
public static Armor T60POWERARMOR = constructArmor("T-60 Power Armor");
public static Armor T65POWERARMOR = constructArmor("T-65 Power Armor");
public static Armor X01POWERARMOR = constructArmor("X-01 Power Armor");
public static Armor APAMKIORPOWERARMOR = constructArmor("APA MkI Power Armor");
public static Armor APAMKIIPOWERARMOR = constructArmor("APA MkII Power Armor");
public static Armor RAIDERPOWERARMOR = constructArmor("Raider Power Armor");
public static Armor ULTRACITEPOWERARMOR = constructArmor("Ultracite Power Armor");
public static Armor T51POWERARMOR = constructArmor("T-51 Power Armor");
public static Armor ENCLAVEUNIFORM = constructArmor("Enclave Uniform");
public static Armor EXCAVATORPOWERARMOR = constructArmor("Excavator Power Armor");
}

View file

@ -1,27 +0,0 @@
package net.halfheart.ventricleengine;
public class Item {
String name;
String description;
byte weight;
short cost;
boolean consumable;
String aidModifier;
public Item(
String name,
String description,
byte weight,
short cost,
boolean consumable,
String aidModifier
){
this.name = name;
this.description = description;
this.weight = weight;
this.cost = cost;
this.consumable = consumable;
this.aidModifier = aidModifier;
}
}

View file

@ -1,5 +1,7 @@
package net.halfheart.ventricleengine;
import net.halfheart.lonesomeroad.ID;
import net.halfheart.ventricleengine.objects.Item;
import org.json.JSONArray;
import org.json.JSONObject;
@ -11,10 +13,9 @@ import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.stream.Collectors;
import static net.halfheart.ventricleengine.AidModifierHandler.STIMPAK;
public class ItemsHandler {
private static Item constructItem(String weaponName) {
// Creates Item by parsing JSON
public static Item constructItem(String itemName) {
String filename = "/items.json";
try (InputStream inputStream = WeaponsHandler.class.getResourceAsStream(filename)) {
String jsonText = new BufferedReader(
@ -27,7 +28,7 @@ public class ItemsHandler {
JSONObject wantedItem = null;
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject item = jsonArray.getJSONObject(i);
if (item.opt("name").toString().equals(weaponName)) {
if (item.opt("name").toString().equals(itemName)) {
wantedItem = item;
}
}
@ -44,12 +45,11 @@ public class ItemsHandler {
}
}
// Returns Item from String of name
public static Item findItem(String itemName) {
return switch (itemName) {
case "Stimpak" -> STIMPAK;
case "Stimpak" -> ID.STIMPAK;
default -> null;
};
}
public static Item STIMPAK = constructItem("Stimpak");
}

View file

@ -1,79 +0,0 @@
package net.halfheart.ventricleengine;
import java.util.List;
public class Player {
String name;
byte strength;
byte perception;
byte endurance;
byte charisma;
byte intelligence;
byte agility;
byte luck;
short caps;
short pwMoney;
short hpCap;
short hp;
short food;
boolean isRadiated;
byte radSeverity;
byte radPoints;
int xp;
short level;
List<Weapon> weapons;
List<Armor> armors;
List<Item> items;
public Player(
String name,
byte strength,
byte perception,
byte endurance,
byte charisma,
byte intelligence,
byte agility,
byte luck,
short caps,
short pwMoney,
short hpCap,
short hp,
short food,
boolean isRadiated,
byte radSeverity,
byte radPoints,
int xp,
short level,
List<Weapon> weapons,
List<Armor> armors,
List<Item> items
)
{
this.name = name;
this.strength = strength;
this.perception = perception;
this.endurance = endurance;
this.charisma = charisma;
this.intelligence = intelligence;
this.agility = agility;
this.luck = luck;
this.caps = caps;
this.pwMoney = pwMoney;
this.hpCap = hpCap;
this.hp = hp;
this.food = food;
this.isRadiated = isRadiated;
this.radSeverity = radSeverity;
this.radPoints = radPoints;
this.xp = xp;
this.level = level;
this.weapons = weapons;
this.armors = armors;
this.items = items;
}
}

View file

@ -6,10 +6,13 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import net.halfheart.ventricleengine.objects.*;
import org.json.*;
public class PlayerHandler {
private static Player constructPlayer(String savePath) {
// Creates Player object by parsing JSON
public static Player constructPlayer(String savePath) {
// "none" Used for creating a blank Player for character creation
if (savePath.equals("none")) {
String name = "No Player Loaded!";
byte strength = 0;
@ -25,13 +28,13 @@ public class PlayerHandler {
short hp = 0;
short food = 0;
boolean isRadiated = false;
byte radSeverity = 0;
byte radPoints = 0;
int xp = 0;
short level = 0;
List<Weapon> weaponList = new ArrayList<>();
List<Armor> armorList = new ArrayList<>();
List<Item> itemList = new ArrayList<>();
List<AidModifier> aidList = new ArrayList<>();
return new Player(
name,
@ -48,13 +51,13 @@ public class PlayerHandler {
hp,
food,
isRadiated,
radSeverity,
radPoints,
xp,
level,
weaponList,
armorList,
itemList
itemList,
aidList
);
} else {
try {
@ -75,7 +78,6 @@ public class PlayerHandler {
short hp = (short) saveData.opt("hp");
short food = (short) saveData.opt("food");
boolean isRadiated = (boolean) saveData.opt("isRadiated");
byte radSeverity = (byte) saveData.opt("radSeverity");
byte radPoints = (byte) saveData.opt("radPoints");
int xp = (int) saveData.opt("xp");
short level = (short) saveData.opt("level");
@ -83,6 +85,7 @@ public class PlayerHandler {
JSONObject weapons = saveData.getJSONObject("weapons");
JSONObject armors = saveData.getJSONObject("armors");
JSONObject items = saveData.getJSONObject("items");
JSONObject aidModifiers = saveData.getJSONObject("aidModifiers");
List<Weapon> weaponList = new ArrayList<>();
for (String key : weapons.keySet()) {
@ -96,6 +99,10 @@ public class PlayerHandler {
for (String key : items.keySet()) {
itemList.add(ItemsHandler.findItem(items.opt(key).toString()));
}
List<AidModifier> aidModifierList = new ArrayList<>();
for (String key : aidModifiers.keySet()) {
aidModifierList.add(AidModifierHandler.findAid(items.opt(key).toString()));
}
return new Player(
name,
@ -112,13 +119,13 @@ public class PlayerHandler {
hp,
food,
isRadiated,
radSeverity,
radPoints,
xp,
level,
weaponList,
armorList,
itemList
itemList,
aidModifierList
);
} catch (FileNotFoundException e) {
System.out.println("Save file not found at path: "+savePath);
@ -128,6 +135,4 @@ public class PlayerHandler {
}
return null;
}
public static Player PLAYER = constructPlayer("none");
}

View file

@ -1,30 +0,0 @@
package net.halfheart.ventricleengine;
public class Weapon {
String name;
String description;
String dmgType;
String ammoType;
short damage;
short cost;
byte weight;
public Weapon(
String name,
String description,
String dmgType,
String ammoType,
short damage,
short cost,
byte weight
)
{
this.name = name;
this.description = description;
this.dmgType = dmgType;
this.ammoType = ammoType;
this.damage = damage;
this.cost = cost;
this.weight = weight;
}
}

View file

@ -1,4 +1,6 @@
package net.halfheart.ventricleengine;
import net.halfheart.lonesomeroad.ID;
import net.halfheart.ventricleengine.objects.Weapon;
import org.json.*;
import java.io.BufferedReader;
@ -10,7 +12,8 @@ import java.util.Objects;
import java.util.stream.Collectors;
public class WeaponsHandler {
private static Weapon constructWeapon(String weaponName) {
// Creates Weapon object by parsing JSON
public static Weapon constructWeapon(String weaponName) {
String filename = "/weapons.json";
try (InputStream inputStream = WeaponsHandler.class.getResourceAsStream(filename)) {
String jsonText = new BufferedReader(
@ -41,40 +44,33 @@ public class WeaponsHandler {
}
}
// Finds Weapon from String of name
public static Weapon findWeapon(String weaponName) {
return switch (weaponName) {
case "Fists" -> FISTS;
case "Combat Knife" -> COMBATKNIFE;
case "Ripper" -> RIPPER;
case "Chainsaw" -> CHAINSAW;
case "Baseball Bat" -> BASEBALLBAT;
case "Power Fist" -> POWERFIST;
case "Super Sledge" -> SUPERSLEDGE;
case "10mm Pistol" -> PISTOL10MM;
case "Hunting Rifle" -> HUNTINGRIFLE;
case "Fists" -> ID.FISTS;
case "Combat Knife" -> ID.COMBATKNIFE;
case "Ripper" -> ID.RIPPER;
case "Chainsaw" -> ID.CHAINSAW;
case "Baseball Bat" -> ID.BASEBALLBAT;
case "Power Fist" -> ID.POWERFIST;
case "Super Sledge" -> ID.SUPERSLEDGE;
case "10mm Pistol" -> ID.PISTOL10MM;
case "Hunting Rifle" -> ID.HUNTINGRIFLE;
default -> null;
};
}
public static void fistCalc() {
switch (PlayerHandler.PLAYER.strength){
switch (ID.PLAYER.strength){
case 0 -> {
FISTS.description = FISTS.description+"please don't.";
FISTS.damage = -2;
ID.FISTS.description = ID.FISTS.description+"please don't.";
ID.FISTS.damage = -2;
}
case (1|2|3|4) -> FISTS.description = FISTS.description+"a last resort.";
case (5|6|7|8) -> FISTS.description = FISTS.description+"use cautiously.";
case (9|10) -> FISTS.description = FISTS.description+"a formidable weapon.";
case (1|2|3|4) -> ID.FISTS.description = ID.FISTS.description+"a last resort.";
case (5|6|7|8) -> ID.FISTS.description = ID.FISTS.description+"use cautiously.";
case (9|10) -> ID.FISTS.description = ID.FISTS.description+"a formidable weapon.";
}
}
public static Weapon FISTS = constructWeapon("Fists");
public static Weapon COMBATKNIFE = constructWeapon("Combat Knife");
public static Weapon RIPPER = constructWeapon("Ripper");
public static Weapon CHAINSAW = constructWeapon("Chainsaw");
public static Weapon BASEBALLBAT = constructWeapon("Baseball Bat");
public static Weapon POWERFIST = constructWeapon("Power Fist");
public static Weapon SUPERSLEDGE = constructWeapon("Super Sledge");
public static Weapon PISTOL10MM = constructWeapon("10mm Pistol");
public static Weapon HUNTINGRIFLE = constructWeapon("Hunting Rifle");
}

View file

@ -0,0 +1,17 @@
package net.halfheart.ventricleengine.objects;
// AidModifiers are used to break down the JSON data into Java-readable components.
public class AidModifier {
public String name; // Name of the effect, seen in game
public String stat; // Stat that the modifier affects
public String mod; // Operation that the modifier is doing to the stat (e.g. * for multiplying)
public short value; // Value that the operation uses (e.g. 25 for +25 hp)
public AidModifier(String name, String stat, String mod, short value) {
this.name = name;
this.stat = stat;
this.mod = mod;
this.value = value;
}
}

View file

@ -0,0 +1,32 @@
package net.halfheart.ventricleengine.objects;
import java.util.List;
// Armor is used to represent each armor as a Java object with values
public class Armor {
public String name; // Name of the armor, seen in game
public String description; // Description seen in pip-boy
public String type; // Armor type, either skin, uarmor, armor, or parmor
public List<Byte> resistances; // A list of resistance byte values for each damage type
public String resUnit; // Unit the resistances use, either dt or dr for damage threshold and damage resistance
public short cost; // Buy/Sell price
public byte weight; // Weight of item in inventory
public Armor(
String name,
String description,
String type,
List<Byte> resistances,
String resUnit,
short cost,
byte weight
)
{
this.name = name;
this.description = description;
this.type = type;
this.resistances = resistances;
this.resUnit = resUnit;
this.cost = cost;
this.weight = weight;
}
}

View file

@ -0,0 +1,28 @@
package net.halfheart.ventricleengine.objects;
// Item is used to represent each armor as a Java object with values
public class Item {
public String name; // Name of item, seen in game
public String description; // Description seen in pip-boy
public byte weight; // Weight of item in inventory
public short cost; // Buy/Sell value of item
public boolean consumable; // Whether the item can be consumed
public String aidModifier; // Aid modifier that the item applies when consumed
public Item(
String name,
String description,
byte weight,
short cost,
boolean consumable,
String aidModifier
){
this.name = name;
this.description = description;
this.weight = weight;
this.cost = cost;
this.consumable = consumable;
this.aidModifier = aidModifier;
}
}

View file

@ -0,0 +1,82 @@
package net.halfheart.ventricleengine.objects;
import java.util.List;
// Player is used to represent the save data values as a Java object
public class Player {
public String name; // Name of player
// Next 7 lines: S.P.E.C.I.A.L. values of player
public byte strength;
public byte perception;
public byte endurance;
public byte charisma;
public byte intelligence;
public byte agility;
public byte luck;
public short caps; // Caps the player has, used for vendors
public short pwMoney; // Pre-War Money the player has, used in Enclave vendors
public short hpCap; // Player health point cap
public short hp; // Current player health
public short food; // Food the player has, eaten each walk cycle
public boolean isRadiated; // Whether the player is irradiated
// TODO: Decide function of radPoints
public byte radPoints; // Rad points player has
public int xp; // Current player xp
public short level; // Current level of player
public List<Weapon> weapons; // Weapons that the player has in inventory
public List<Armor> armors; // Armors that the player has in inventory
public List<Item> items; // Items that the player has in inventory
public List<AidModifier> aidModifiers; // Modifiers currently affecting player
public Player(
String name,
byte strength,
byte perception,
byte endurance,
byte charisma,
byte intelligence,
byte agility,
byte luck,
short caps,
short pwMoney,
short hpCap,
short hp,
short food,
boolean isRadiated,
byte radPoints,
int xp,
short level,
List<Weapon> weapons,
List<Armor> armors,
List<Item> items,
List<AidModifier> aidModifiers
)
{
this.name = name;
this.strength = strength;
this.perception = perception;
this.endurance = endurance;
this.charisma = charisma;
this.intelligence = intelligence;
this.agility = agility;
this.luck = luck;
this.caps = caps;
this.pwMoney = pwMoney;
this.hpCap = hpCap;
this.hp = hp;
this.food = food;
this.isRadiated = isRadiated;
this.radPoints = radPoints;
this.xp = xp;
this.level = level;
this.weapons = weapons;
this.armors = armors;
this.items = items;
this.aidModifiers = aidModifiers;
}
}

View file

@ -0,0 +1,31 @@
package net.halfheart.ventricleengine.objects;
// Weapon is used to represent each weapon as a Java object with values
public class Weapon {
public String name; // Name of weapon, seen in game
public String description; // Description of weapon, seen in pip-boy
public String dmgType; // Type of damage the weapon deals. Laser, Bash, Slash. etc.
public String ammoType; // Ammo the weapon uses. "none" for melee weapons
public short damage; // Damage the weapon deals
public short cost; // Buy/Sell value of weapon
public byte weight; // Weight of weapon in inventory
public Weapon(
String name,
String description,
String dmgType,
String ammoType,
short damage,
short cost,
byte weight
)
{
this.name = name;
this.description = description;
this.dmgType = dmgType;
this.ammoType = ammoType;
this.damage = damage;
this.cost = cost;
this.weight = weight;
}
}

View file

@ -1,11 +1,10 @@
[
{
"food": {
"Stimpak": {
"name": "Stimpak",
"stat": "hp",
"mod": "+",
"value": "20",
"duration": 0
"value": "20"
}
}
]