Switch Item.template and MobLoot to CObjectTemplate
Item.template is now the cache template from CObjectTemplate.lookup instead of the legacy DB ItemTemplate, so item.template.cacheTemplate.X becomes item.template.X. MobLoot, LootManager, ItemManager.isTwoHanded/ isShield and CombatManager.getSwingAnimation take a CObjectTemplate. No value changes: every getter already read the cache template through the bridge, and the lookup resolves the same 7586 ids as static_item_templates with the same item_type (offline parity p17.py, 0 differences). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f39e35ac23
commit
6b4e9815e0
38 files changed
+201
-193
No files matched your search
@@ -29,6 +29,7 @@ import engine.net.Dispatch;
|
||||
import engine.net.client.ClientConnection;
|
||||
import engine.net.client.msg.ApplyRuneMsg;
|
||||
import engine.net.client.msg.UpdateStateMsg;
|
||||
import engine.parsers.objects.CObjectTemplate;
|
||||
import engine.parsers.objects.RuneTemplate;
|
||||
import engine.powers.EffectsBase;
|
||||
import engine.powers.PowersBase;
|
||||
@@ -692,17 +693,17 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
|
||||
// make sure weapon exists
|
||||
boolean noWeapon = false;
|
||||
ItemTemplate weaponTemplate = null;
|
||||
CObjectTemplate weaponTemplate = null;
|
||||
engine.parsers.objects.ItemTemplate.Damage damage;
|
||||
|
||||
if (weapon == null)
|
||||
noWeapon = true;
|
||||
else {
|
||||
ItemTemplate itemTemplate = weapon.template;
|
||||
CObjectTemplate itemTemplate = weapon.template;
|
||||
|
||||
if (itemTemplate == null)
|
||||
noWeapon = true;
|
||||
else if (!weapon.template.cacheTemplate.getItemType().equals(ItemType.WEAPON)) {
|
||||
else if (!weapon.template.getItemType().equals(ItemType.WEAPON)) {
|
||||
defaultAtrAndDamage(abstractCharacter, mainHand);
|
||||
return;
|
||||
} else
|
||||
@@ -719,7 +720,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
if (noWeapon) {
|
||||
if (mainHand) {
|
||||
Item off = abstractCharacter.charItemManager.getEquipped().get(EquipSlotType.LHELD);
|
||||
if (off != null && off.template != null && off.template.cacheTemplate.getItemType().equals(ItemType.WEAPON))
|
||||
if (off != null && off.template != null && off.template.getItemType().equals(ItemType.WEAPON))
|
||||
abstractCharacter.rangeHandOne = 10 * (1 + (abstractCharacter.statStrBase / 600)); // Set
|
||||
// to
|
||||
// no
|
||||
@@ -766,8 +767,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
|
||||
}
|
||||
|
||||
skillPercentage = getModifiedAmount(abstractCharacter.skills.get(weapon.template.cacheTemplate.getItemSkillUsed()));
|
||||
masteryPercentage = getModifiedAmount(abstractCharacter.skills.get(weaponTemplate.cacheTemplate.getItemSkillMasteryUsed()));
|
||||
skillPercentage = getModifiedAmount(abstractCharacter.skills.get(weapon.template.getItemSkillUsed()));
|
||||
masteryPercentage = getModifiedAmount(abstractCharacter.skills.get(weaponTemplate.getItemSkillMasteryUsed()));
|
||||
|
||||
if (masteryPercentage == 0f)
|
||||
mastDam = 0f;
|
||||
@@ -828,7 +829,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
|
||||
//calculate speed
|
||||
if (weaponTemplate != null)
|
||||
speed = engine.parsers.objects.ItemTemplate.getWeapon(weaponTemplate.template_id).weapon_wepspeed;
|
||||
speed = engine.parsers.objects.ItemTemplate.getWeapon(weaponTemplate.getTemplateId()).weapon_wepspeed;
|
||||
else
|
||||
speed = 20f; //unarmed attack speed
|
||||
if (weapon != null)
|
||||
@@ -886,7 +887,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
// Client (0x466EB0 sets char+0xD0C, 0x46D200 applies it): 30% cut only when both hands hold a WEAPON.
|
||||
|
||||
if (!noWeapon && otherHand != null && otherHand.template != null
|
||||
&& otherHand.template.cacheTemplate.getItemType().equals(ItemType.WEAPON)) {
|
||||
&& otherHand.template.getItemType().equals(ItemType.WEAPON)) {
|
||||
min *= 0.7f;
|
||||
max *= 0.7f;
|
||||
}
|
||||
@@ -954,7 +955,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
if (ItemManager.isShield(shield) == false)
|
||||
return 0;
|
||||
|
||||
ItemTemplate template = shield.template;
|
||||
CObjectTemplate template = shield.template;
|
||||
|
||||
if (template == null)
|
||||
return 0;
|
||||
@@ -990,19 +991,19 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
if (armor == null)
|
||||
return 0;
|
||||
|
||||
ItemTemplate template = armor.template;
|
||||
CObjectTemplate template = armor.template;
|
||||
|
||||
if (template == null)
|
||||
return 0;
|
||||
|
||||
if (!armor.template.cacheTemplate.getItemType().equals(ItemType.ARMOR))
|
||||
if (!armor.template.getItemType().equals(ItemType.ARMOR))
|
||||
return 0;
|
||||
|
||||
// "Cloth" is a placeholder in Skills.cfg (token 0) that no character learns
|
||||
if (armor.template.cacheTemplate.getItemSkillUsed().isEmpty() || armor.template.cacheTemplate.getItemSkillUsed().equals("Cloth"))
|
||||
if (armor.template.getItemSkillUsed().isEmpty() || armor.template.getItemSkillUsed().equals("Cloth"))
|
||||
return engine.parsers.objects.ItemTemplate._items.get(armor.templateID).item_defense_rating;
|
||||
|
||||
CharacterSkill armorSkill = abstractCharacter.skills.get(armor.template.cacheTemplate.getItemSkillUsed());
|
||||
CharacterSkill armorSkill = abstractCharacter.skills.get(armor.template.getItemSkillUsed());
|
||||
|
||||
if (abstractCharacter.getObjectType().equals(GameObjectType.PlayerCharacter) && armorSkill == null) {
|
||||
Logger.error("Player " + abstractCharacter.getObjectUUID()
|
||||
@@ -1031,7 +1032,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
private static float getWeaponDefense(AbstractCharacter abstractCharacter, ConcurrentHashMap<EquipSlotType, Item> equipped) {
|
||||
|
||||
Item weapon = equipped.get(EquipSlotType.RHELD);
|
||||
ItemTemplate weaponTemplate = null;
|
||||
CObjectTemplate weaponTemplate = null;
|
||||
CharacterSkill skill, mastery;
|
||||
float val = 0;
|
||||
boolean unarmed = false;
|
||||
@@ -1052,8 +1053,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
skill = abstractCharacter.skills.get("Unarmed Combat");
|
||||
mastery = abstractCharacter.skills.get("Unarmed Combat Mastery");
|
||||
} else {
|
||||
skill = abstractCharacter.skills.get(weapon.template.cacheTemplate.getItemSkillUsed());
|
||||
mastery = abstractCharacter.skills.get(weaponTemplate.cacheTemplate.getItemSkillMasteryUsed());
|
||||
skill = abstractCharacter.skills.get(weapon.template.getItemSkillUsed());
|
||||
mastery = abstractCharacter.skills.get(weaponTemplate.getItemSkillMasteryUsed());
|
||||
}
|
||||
|
||||
if (skill != null)
|
||||
@@ -1088,7 +1089,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
|
||||
for (Item item : equipped.values()) {
|
||||
|
||||
ItemTemplate ib = item.template;
|
||||
CObjectTemplate ib = item.template;
|
||||
|
||||
if (ib == null)
|
||||
continue;
|
||||
|
||||
Reference in new issue
Block a user