Add cache parsers and POJOs for DEED and RUNE templates
New engine.parsers package: - cache: DeedParser and RuneParser load COBJECTS/DEED and COBJECTS/RUNE JSON straight from the data dir, keyed by file id. CacheParserUtil holds the shared JSON helpers. - objects: standalone DeedTemplate and RuneTemplate covering every field in the client data, plus shared PowerGrant/UserPowerAction. - wpak: placeholder for upcoming wpak parsers. Not wired into server startup yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
777f7ad89d
commit
0d48080e38
8 files changed
+1222
No files matched your search
@@ -0,0 +1,120 @@
|
||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
||||
// Magicbane Emulator Project © 2013 - 2026
|
||||
// https://www.magicbane.com
|
||||
|
||||
package engine.parsers.objects;
|
||||
|
||||
import engine.math.Vector3fImmutable;
|
||||
import engine.mbEnums;
|
||||
import org.json.JSONArray;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumMap;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
// Deed template as defined by the client's cache data
|
||||
// (MBDATA/data/COBJECTS/DEED). Field names match the JSON keys.
|
||||
//
|
||||
// Values are kept as the client defines them: no req/res splitting,
|
||||
// no defaults substituted. Strings with a matching enum in mbEnums
|
||||
// are stored as that enum; everything else stays a String.
|
||||
//
|
||||
// Read only once loaded.
|
||||
|
||||
public class DeedTemplate {
|
||||
|
||||
public int template_id;
|
||||
|
||||
// obj_
|
||||
|
||||
public String obj_name;
|
||||
public boolean obj_pickable;
|
||||
public float obj_gravity;
|
||||
public float obj_cull_distance;
|
||||
public Vector3fImmutable obj_scale;
|
||||
public int obj_render_object;
|
||||
public boolean obj_double_fusion;
|
||||
public Vector3fImmutable obj_forward_vector;
|
||||
public String obj_tracking_name;
|
||||
public float obj_max_tracking_distance;
|
||||
public int obj_icon;
|
||||
public float obj_gravity_f;
|
||||
public final LinkedHashMap<String, Integer> obj_sound_events = new LinkedHashMap<>();
|
||||
public JSONArray obj_arc_hardpoint_list;
|
||||
public final HashMap<String, String> obj_sparse_data = new HashMap<>();
|
||||
public int obj_render_object_low_detail;
|
||||
public Vector3fImmutable obj_default_alignment;
|
||||
public String obj_sound_table;
|
||||
|
||||
// combat_
|
||||
|
||||
public float combat_health_current;
|
||||
public float combat_health_full;
|
||||
public final LinkedHashMap<String, Float> combat_attack_resist = new LinkedHashMap<>();
|
||||
public JSONArray combat_powers;
|
||||
|
||||
// item_
|
||||
|
||||
public mbEnums.ItemType item_type;
|
||||
public int item_eq_slots_value;
|
||||
public boolean item_eq_slots_type;
|
||||
public final EnumSet<mbEnums.EquipSlotType> item_eq_slots_or = EnumSet.noneOf(mbEnums.EquipSlotType.class);
|
||||
public final EnumSet<mbEnums.EquipSlotType> item_eq_slots_and = EnumSet.noneOf(mbEnums.EquipSlotType.class);
|
||||
public boolean item_takeable;
|
||||
public int item_value;
|
||||
public int item_wt;
|
||||
public float item_passive_defense_mod;
|
||||
public String item_base_name;
|
||||
public String item_dsc;
|
||||
public int item_render_object_female;
|
||||
public float item_health_full;
|
||||
public String item_skill_used;
|
||||
public String item_skill_mastery_used;
|
||||
public int item_parry_anim_id;
|
||||
public final EnumMap<mbEnums.ShrineType, Integer> item_offering_info = new EnumMap<>(mbEnums.ShrineType.class);
|
||||
public final EnumSet<mbEnums.ItemFlags> item_flags = EnumSet.noneOf(mbEnums.ItemFlags.class);
|
||||
public final EnumSet<mbEnums.ItemUseFlags> item_use_flags = EnumSet.noneOf(mbEnums.ItemUseFlags.class);
|
||||
public int item_post_item_id;
|
||||
public int item_initial_charges;
|
||||
public int item_book_arcana;
|
||||
public final LinkedHashMap<String, Integer> item_skill_req = new LinkedHashMap<>();
|
||||
public boolean item_race_req_restrict;
|
||||
public final EnumSet<mbEnums.MonsterType> item_race_req = EnumSet.noneOf(mbEnums.MonsterType.class);
|
||||
public boolean item_class_req_restrict;
|
||||
public final EnumSet<mbEnums.ClassType> item_class_req = EnumSet.noneOf(mbEnums.ClassType.class);
|
||||
public boolean item_disc_req_restrict;
|
||||
public final EnumSet<mbEnums.DisciplineType> item_disc_req = EnumSet.noneOf(mbEnums.DisciplineType.class);
|
||||
public final EnumMap<mbEnums.AttributeType, Integer> item_attr_req = new EnumMap<>(mbEnums.AttributeType.class);
|
||||
public int item_level_req;
|
||||
public int item_rank_req;
|
||||
public mbEnums.SexType item_sex_req;
|
||||
public final ArrayList<UserPowerAction> item_user_power_action = new ArrayList<>();
|
||||
public final ArrayList<PowerGrant> item_power_grant = new ArrayList<>();
|
||||
public final LinkedHashMap<String, ArrayList<int[]>> item_power_action = new LinkedHashMap<>();
|
||||
public boolean item_sheathable;
|
||||
public boolean item_has_stub;
|
||||
public final EnumMap<mbEnums.ShrineType, Integer> item_offering_adjustments = new EnumMap<>(mbEnums.ShrineType.class);
|
||||
public final EnumMap<mbEnums.ResourceType, Integer> item_resource_costs = new EnumMap<>(mbEnums.ResourceType.class);
|
||||
public int item_bane_rank;
|
||||
public boolean item_ignore_saved_actions;
|
||||
|
||||
// deed_
|
||||
|
||||
public int deed_type;
|
||||
public int deed_furniture_id;
|
||||
public int deed_target_id;
|
||||
public int deed_employment;
|
||||
public int deed_start_rank;
|
||||
public int deed_name_lookup;
|
||||
public boolean deed_indoors;
|
||||
public boolean deed_is_fortress;
|
||||
public float deed_namelookup_val;
|
||||
public boolean deed_custom_city;
|
||||
public int deed_structure_id;
|
||||
}
|
||||
Reference in new issue
Block a user