mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-14 04:13:14 -04:00
Refactored WeaponObject
The scripting of weapons should be much, much easier now. See the included examples in DevService. Attributes such as attack speed and range are now being read/written to the actual items attributes.
This commit is contained in:
@@ -18,7 +18,7 @@ def run(core, actor, target, commandString):
|
||||
elementalType = weapon.getElementalType()
|
||||
commandName = ''
|
||||
|
||||
if elementalType == '@obj_attr_n:elemental_heat':
|
||||
if elementalType == 'heat':
|
||||
if actor.getLevel() >= 58:
|
||||
commandName = 'co_hw_dot_fire_1'
|
||||
if actor.getLevel() >= 60:
|
||||
@@ -29,7 +29,7 @@ def run(core, actor, target, commandString):
|
||||
commandName = 'co_hw_dot_fire_4'
|
||||
if actor.getLevel() >= 90:
|
||||
commandName = 'co_hw_dot_fire_5'
|
||||
elif elementalType == '@obj_attr_n:elemental_cold':
|
||||
elif elementalType == 'cold':
|
||||
if actor.getLevel() >= 58:
|
||||
commandName = 'co_hw_dot_cold_1'
|
||||
if actor.getLevel() >= 60:
|
||||
@@ -40,7 +40,7 @@ def run(core, actor, target, commandString):
|
||||
commandName = 'co_hw_dot_cold_4'
|
||||
if actor.getLevel() >= 90:
|
||||
commandName = 'co_hw_dot_cold_5'
|
||||
elif elementalType == '@obj_attr_n:elemental_acid':
|
||||
elif elementalType == 'acid':
|
||||
if actor.getLevel() >= 58:
|
||||
commandName = 'co_hw_dot_acid_1'
|
||||
if actor.getLevel() >= 60:
|
||||
@@ -51,7 +51,7 @@ def run(core, actor, target, commandString):
|
||||
commandName = 'co_hw_dot_acid_4'
|
||||
if actor.getLevel() >= 90:
|
||||
commandName = 'co_hw_dot_acid_5'
|
||||
elif elementalType == '@obj_attr_n:elemental_electricity':
|
||||
elif elementalType == 'electricity':
|
||||
if actor.getLevel() >= 58:
|
||||
commandName = 'co_hw_dot_electrical_1'
|
||||
if actor.getLevel() >= 60:
|
||||
@@ -62,7 +62,7 @@ def run(core, actor, target, commandString):
|
||||
commandName = 'co_hw_dot_electrical_4'
|
||||
if actor.getLevel() >= 90:
|
||||
commandName = 'co_hw_dot_electrical_5'
|
||||
elif elementalType == '@obj_attr_n:elemental_energy':
|
||||
elif elementalType == 'energy':
|
||||
if actor.getLevel() >= 58:
|
||||
commandName = 'co_hw_dot_energy_1'
|
||||
if actor.getLevel() >= 60:
|
||||
@@ -73,7 +73,7 @@ def run(core, actor, target, commandString):
|
||||
commandName = 'co_hw_dot_energy_4'
|
||||
if actor.getLevel() >= 90:
|
||||
commandName = 'co_hw_dot_energy_5'
|
||||
elif elementalType =='@obj_attr_n:elemental_kinetic':
|
||||
elif elementalType =='kinetic':
|
||||
if actor.getLevel() >= 58:
|
||||
commandName = 'co_hw_dot_kinetic_1'
|
||||
if actor.getLevel() >= 60:
|
||||
|
||||
@@ -1,25 +1,37 @@
|
||||
import sys
|
||||
|
||||
def Rifle():
|
||||
def weap_0():
|
||||
return "expertise_critical_rifle"
|
||||
|
||||
def Carbine():
|
||||
def weap_1():
|
||||
return "expertise_critical_carbine"
|
||||
|
||||
def Pistol():
|
||||
def weap_2():
|
||||
return "expertise_critical_pistol"
|
||||
|
||||
def OneHandedMelee():
|
||||
def weap_4():
|
||||
return "expertise_critical_1h"
|
||||
|
||||
def TwoHandedMelee():
|
||||
def weap_5():
|
||||
return "expertise_critical_2h"
|
||||
|
||||
def Unarmed():
|
||||
def weap_6():
|
||||
return "expertise_critical_unarmed"
|
||||
|
||||
def Polearm():
|
||||
def weap_7():
|
||||
return "expertise_critical_polearm"
|
||||
|
||||
def FreeTargetingHeavyWeapon():
|
||||
|
||||
def weap_9():
|
||||
return ""
|
||||
|
||||
def weap_10():
|
||||
return ""
|
||||
|
||||
def weap_11():
|
||||
return ""
|
||||
|
||||
def weap_12():
|
||||
return "expertise_critical_heavy"
|
||||
|
||||
def weap_13():
|
||||
return "expertise_critical_heavy"
|
||||
@@ -1,4 +1,11 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttackSpeed(1)
|
||||
object.setDamageType("kinetic")
|
||||
object.setMinDamage(50)
|
||||
object.setMaxDamage(100)
|
||||
object.setMaxRange(5)
|
||||
object.setWeaponType(6)
|
||||
|
||||
return
|
||||
@@ -31,7 +31,7 @@ import engine.resources.scene.Planet;
|
||||
import engine.resources.scene.Point3D;
|
||||
import engine.resources.scene.Quaternion;
|
||||
|
||||
@Persistent(version=0)
|
||||
@Persistent(version=1)
|
||||
public class WeaponObject extends TangibleObject {
|
||||
|
||||
// TODO: Thread safety
|
||||
@@ -39,53 +39,24 @@ public class WeaponObject extends TangibleObject {
|
||||
@NotPersistent
|
||||
private WeaponMessageBuilder messageBuilder;
|
||||
|
||||
private float attackSpeed = 1;
|
||||
private float maxRange;
|
||||
|
||||
public WeaponObject(long objectID, Planet planet, String template) {
|
||||
super(objectID, planet, template, new Point3D(0, 0, 0), new Quaternion(1, 0, 1, 0));
|
||||
messageBuilder = new WeaponMessageBuilder(this);
|
||||
if (this.getClass().getSimpleName().equals("WeaponObject")) setIntAttribute("volume", 1);
|
||||
calculateRange();
|
||||
calculateAttackSpeed();
|
||||
setStringAttribute("cat_wpn_damage.damage", "0-0");
|
||||
}
|
||||
|
||||
public WeaponObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) {
|
||||
super(objectID, planet, template, position, orientation);
|
||||
messageBuilder = new WeaponMessageBuilder(this);
|
||||
if (this.getClass().getSimpleName().equals("WeaponObject")) setIntAttribute("volume", 1);
|
||||
calculateRange();
|
||||
calculateAttackSpeed();
|
||||
setStringAttribute("cat_wpn_damage.damage", "0-0");
|
||||
}
|
||||
|
||||
|
||||
public WeaponObject() {
|
||||
super();
|
||||
messageBuilder = new WeaponMessageBuilder(this);
|
||||
//calculateRange();
|
||||
}
|
||||
|
||||
private void calculateRange() {
|
||||
|
||||
int weaponType = getWeaponType();
|
||||
|
||||
switch(weaponType) {
|
||||
|
||||
case 0: maxRange = 64; break;
|
||||
case 1: maxRange = 50; break;
|
||||
case 2: maxRange = 35; break;
|
||||
case 12: maxRange = 64; break;
|
||||
case 4: maxRange = 5; break;
|
||||
case 5: maxRange = 5; break;
|
||||
case 6: maxRange = 5; break;
|
||||
case 7: maxRange = 5; break;
|
||||
case 8: maxRange = 64; break;
|
||||
case 9: maxRange = 5; break;
|
||||
case 10: maxRange = 5; break;
|
||||
case 11: maxRange = 5; break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getIncapTimer() {
|
||||
@@ -118,7 +89,9 @@ public class WeaponObject extends TangibleObject {
|
||||
}
|
||||
|
||||
public void setMaxDamage(int maxDamage) {
|
||||
|
||||
setStringAttribute("cat_wpn_damage.damage", String.valueOf(getMinDamage()) + "-" + String.valueOf(maxDamage));
|
||||
setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond());
|
||||
}
|
||||
|
||||
public int getMinDamage() {
|
||||
@@ -126,7 +99,9 @@ public class WeaponObject extends TangibleObject {
|
||||
}
|
||||
|
||||
public void setMinDamage(int minDamage) {
|
||||
|
||||
setStringAttribute("cat_wpn_damage.damage", String.valueOf(minDamage) + "-" + String.valueOf(getMaxDamage()));
|
||||
setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond());
|
||||
}
|
||||
|
||||
public int getElementalDamage() {
|
||||
@@ -135,14 +110,17 @@ public class WeaponObject extends TangibleObject {
|
||||
|
||||
public void setElementalDamage(int elementalDamage) {
|
||||
setIntAttribute("cat_wpn_damage.wpn_elemental_value", elementalDamage);
|
||||
setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond());
|
||||
}
|
||||
|
||||
public String getElementalType() {
|
||||
return getStringAttribute("cat_wpn_damage.wpn_elemental_type");
|
||||
if (getStringAttribute("cat_wpn_damage.wpn_elemental_type") != null )
|
||||
return getStringAttribute("cat_wpn_damage.wpn_elemental_type").replace("@obj_attr_n:elemental_", "");
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setElementalType(String elementalType) {
|
||||
setStringAttribute("cat_wpn_damage.wpn_elemental_type", elementalType);
|
||||
setStringAttribute("cat_wpn_damage.wpn_elemental_type", "@obj_attr_n:elemental_" + elementalType);
|
||||
}
|
||||
|
||||
public String getDamageType() {
|
||||
@@ -150,43 +128,26 @@ public class WeaponObject extends TangibleObject {
|
||||
}
|
||||
|
||||
public void setDamageType(String damageType) {
|
||||
setStringAttribute("cat_wpn_damage.wpn_damage_type", damageType);
|
||||
setStringAttribute("cat_wpn_damage.wpn_damage_type", "@obj_attr_n:armor_eff_" + damageType);
|
||||
}
|
||||
|
||||
public int getDamagePerSecond() {
|
||||
if (getElementalType() != null)
|
||||
if(getAttributes().containsKey("cat_wpn_damage.damage") && getAttributes().containsKey("cat_wpn_damage.wpn_attack_speed")) {
|
||||
|
||||
if (getElementalType() != null )
|
||||
return (int) (((getMaxDamage() + getElementalDamage() + getMinDamage() + getElementalDamage()) / 2 + getElementalDamage()) * (1 / getAttackSpeed()));
|
||||
else
|
||||
return (int) (((getMaxDamage() + getMinDamage()) / 2 ) * (1 / getAttackSpeed()));
|
||||
else
|
||||
return (int) (((getMaxDamage() + getMinDamage()) / 2 ) * (1 / getAttackSpeed()));
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getWeaponType() {
|
||||
|
||||
int weaponType = -1;
|
||||
|
||||
String template = getTemplate();
|
||||
|
||||
if(template == null)
|
||||
return weaponType;
|
||||
|
||||
if(template.contains("rifle")) weaponType = 0;
|
||||
if(template.contains("carbine")) weaponType = 1;
|
||||
if(template.contains("pistol")) weaponType = 2;
|
||||
if(template.contains("heavy")) weaponType = 12;
|
||||
if(template.contains("sword") || template.contains("baton")) weaponType = 4;
|
||||
if(template.contains("2h_sword") || template.contains("axe")) weaponType = 5;
|
||||
if(template.contains("unarmed")) weaponType = 6;
|
||||
if(template.contains("polearm") || template.contains("lance")) weaponType = 7;
|
||||
if(template.contains("thrown")) weaponType = 8;
|
||||
if(template.contains("lightsaber_one_handed")) weaponType = 9;
|
||||
if(template.contains("lightsaber_two_handed")) weaponType = 10;
|
||||
if(template.contains("lightsaber_polearm")) weaponType = 11;
|
||||
|
||||
if(weaponType == -1)
|
||||
weaponType = 6;
|
||||
|
||||
return weaponType;
|
||||
|
||||
return Integer.parseInt(getStringAttribute("cat_wpn_damage.wpn_category").replace("@obj_attr_n:wpn_category_", ""));
|
||||
}
|
||||
|
||||
public void setWeaponType(int weaponType) {
|
||||
setStringAttribute("cat_wpn_damage.wpn_category", "@obj_attr_n:wpn_category_" + weaponType);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -204,11 +165,15 @@ public class WeaponObject extends TangibleObject {
|
||||
}
|
||||
|
||||
public float getAttackSpeed() {
|
||||
return attackSpeed;
|
||||
return getFloatAttribute("cat_wpn_damage.wpn_attack_speed");
|
||||
}
|
||||
|
||||
public void setAttackSpeed(float attackSpeed) {
|
||||
this.attackSpeed = attackSpeed;
|
||||
if((int) attackSpeed != attackSpeed)
|
||||
setFloatAttribute("cat_wpn_damage.wpn_attack_speed", attackSpeed);
|
||||
else
|
||||
setIntAttribute("cat_wpn_damage.wpn_attack_speed", (int) attackSpeed);
|
||||
|
||||
}
|
||||
|
||||
public WeaponMessageBuilder getMessageBuilder() {
|
||||
@@ -216,11 +181,14 @@ public class WeaponObject extends TangibleObject {
|
||||
}
|
||||
|
||||
public float getMaxRange() {
|
||||
return maxRange;
|
||||
return Float.parseFloat(getStringAttribute("cat_wpn_damage.wpn_range").replace("0-", "").replace("m", ""));
|
||||
}
|
||||
|
||||
public void setMaxRange(float maxRange) {
|
||||
this.maxRange = maxRange;
|
||||
if((int) maxRange != maxRange)
|
||||
setStringAttribute("cat_wpn_damage.wpn_range", "0-" + String.valueOf(maxRange) + "m");
|
||||
else
|
||||
setStringAttribute("cat_wpn_damage.wpn_range", "0-" + String.valueOf((int) maxRange) + "m");
|
||||
}
|
||||
|
||||
public boolean isMelee() {
|
||||
@@ -244,29 +212,5 @@ public class WeaponObject extends TangibleObject {
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
private void calculateAttackSpeed() {
|
||||
|
||||
int weaponType = getWeaponType();
|
||||
|
||||
switch(weaponType) {
|
||||
|
||||
case 0: attackSpeed = 0.8f; break;
|
||||
case 1: attackSpeed = 0.6f; break;
|
||||
case 2: attackSpeed = 0.4f; break;
|
||||
case 12: attackSpeed = 1; break;
|
||||
case 4: attackSpeed = 1; break;
|
||||
case 5: attackSpeed = 1; break;
|
||||
case 6: attackSpeed = 1; break;
|
||||
case 7: attackSpeed = 1; break;
|
||||
case 8: attackSpeed = 1; break;
|
||||
case 9: attackSpeed = 1; break;
|
||||
case 10: attackSpeed = 1; break;
|
||||
case 11: attackSpeed = 1; break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -331,13 +331,7 @@ public class CharacterService implements INetworkDispatch {
|
||||
object.addObjectToEquipList(appInventory);
|
||||
|
||||
WeaponObject defaultWeapon = (WeaponObject) core.objectService.createObject("object/weapon/creature/shared_creature_default_weapon.iff", object.getPlanet());
|
||||
defaultWeapon.setDamageType("@obj_attr_n:armor_eff_kinetic");
|
||||
defaultWeapon.setStringAttribute("cat_wpn_damage.damage", "0-0");
|
||||
defaultWeapon.setMaxDamage(100);
|
||||
defaultWeapon.setMinDamage(50);
|
||||
|
||||
object.addObjectToEquipList(defaultWeapon);
|
||||
|
||||
object._add(defaultWeapon);
|
||||
object.setWeaponId(defaultWeapon.getObjectID());
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ import resources.objects.deed.Player_House_Deed;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import resources.objects.tangible.TangibleObject;
|
||||
import resources.objects.tool.SurveyTool;
|
||||
import resources.objects.weapon.WeaponObject;
|
||||
import services.sui.SUIWindow;
|
||||
import services.sui.SUIService.ListBoxType;
|
||||
import services.sui.SUIWindow.SUICallback;
|
||||
@@ -96,6 +97,7 @@ public class DevService implements INetworkDispatch {
|
||||
suiOptions.put((long) 30, "Jedi Weapons");
|
||||
suiOptions.put((long) 31, "Melee Weapons");
|
||||
suiOptions.put((long) 32, "Ranged Weapons");
|
||||
suiOptions.put((long) 33, "Heavy Weapons");
|
||||
break;
|
||||
case 4: // [Items] Misc Items
|
||||
suiOptions.put((long) 40, "Unity Ring");
|
||||
@@ -202,26 +204,35 @@ public class DevService implements INetworkDispatch {
|
||||
|
||||
// [Items] Weapons
|
||||
case 30: // Jedi Weapons
|
||||
TangibleObject lightsaber1 = (TangibleObject) core.objectService.createObject("object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff", planet);
|
||||
WeaponObject lightsaber1 = (WeaponObject) core.objectService.createObject("object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff", planet);
|
||||
lightsaber1.setIntAttribute("required_combat_level", 90);
|
||||
lightsaber1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
|
||||
lightsaber1.setStringAttribute("class_required", "Jedi");
|
||||
lightsaber1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
lightsaber1.setStringAttribute("cat_wpn_damage.damage", "689-1379");
|
||||
lightsaber1.setAttackSpeed(1);
|
||||
lightsaber1.setDamageType("energy");
|
||||
lightsaber1.setMaxRange(5);
|
||||
lightsaber1.setMinDamage(689);
|
||||
lightsaber1.setMaxDamage(1379);
|
||||
lightsaber1.setWeaponType(9);
|
||||
|
||||
TangibleObject lightsaber2 = (TangibleObject) core.objectService.createObject("object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff", planet);
|
||||
WeaponObject lightsaber2 = (WeaponObject) core.objectService.createObject("object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff", planet);
|
||||
lightsaber2.setIntAttribute("required_combat_level", 90);
|
||||
lightsaber2.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
|
||||
lightsaber2.setStringAttribute("class_required", "Jedi");
|
||||
lightsaber2.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
lightsaber2.setStringAttribute("cat_wpn_damage.damage", "689-1379");
|
||||
lightsaber2.setAttackSpeed(1);
|
||||
lightsaber2.setDamageType("energy");
|
||||
lightsaber2.setMaxRange(5);
|
||||
lightsaber2.setMinDamage(689);
|
||||
lightsaber2.setMaxDamage(1379);
|
||||
lightsaber2.setWeaponType(10);
|
||||
|
||||
TangibleObject lightsaber3 = (TangibleObject) core.objectService.createObject("object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff", planet);
|
||||
WeaponObject lightsaber3 = (WeaponObject) core.objectService.createObject("object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff", planet);
|
||||
lightsaber3.setIntAttribute("required_combat_level", 90);
|
||||
lightsaber3.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
|
||||
lightsaber3.setStringAttribute("class_required", "Jedi");
|
||||
lightsaber3.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
lightsaber3.setStringAttribute("cat_wpn_damage.damage", "689-1379");
|
||||
lightsaber3.setAttackSpeed(1);
|
||||
lightsaber3.setDamageType("energy");
|
||||
lightsaber3.setMaxRange(5);
|
||||
lightsaber3.setMinDamage(689);
|
||||
lightsaber3.setMaxDamage(1379);
|
||||
lightsaber3.setWeaponType(11);
|
||||
|
||||
Random random = new Random();
|
||||
|
||||
@@ -234,43 +245,67 @@ public class DevService implements INetworkDispatch {
|
||||
inventory.add(lightsaber3);
|
||||
return;
|
||||
case 31: // Melee Weapons
|
||||
SWGObject sword1 = core.objectService.createObject("object/weapon/melee/sword/shared_sword_01.iff", planet);
|
||||
WeaponObject sword1 = (WeaponObject) core.objectService.createObject("object/weapon/melee/sword/shared_sword_01.iff", planet);
|
||||
sword1.setIntAttribute("required_combat_level", 90);
|
||||
sword1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
|
||||
sword1.setStringAttribute("class_required", "None");
|
||||
sword1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
sword1.setStringAttribute("cat_wpn_damage.damage", "1100-1200");
|
||||
sword1.setAttackSpeed(1);
|
||||
sword1.setMaxRange(5);
|
||||
sword1.setDamageType("kinetic");
|
||||
sword1.setMinDamage(1100);
|
||||
sword1.setMaxDamage(1200);
|
||||
sword1.setWeaponType(4);
|
||||
|
||||
inventory.add(sword1);
|
||||
return;
|
||||
case 32: // Ranged Weapons
|
||||
SWGObject rifle1 = core.objectService.createObject("object/weapon/ranged/rifle/shared_rifle_e11.iff", planet);
|
||||
WeaponObject rifle1 = (WeaponObject) core.objectService.createObject("object/weapon/ranged/rifle/shared_rifle_e11.iff", planet);
|
||||
rifle1.setIntAttribute("required_combat_level", 90);
|
||||
rifle1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", (float) 0.8);
|
||||
rifle1.setStringAttribute("class_required", "None");
|
||||
rifle1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
rifle1.setStringAttribute("cat_wpn_damage.damage", "800-1250");
|
||||
rifle1.setAttackSpeed((float) 0.8);
|
||||
rifle1.setMaxRange(64);
|
||||
rifle1.setDamageType("energy");
|
||||
rifle1.setMinDamage(800);
|
||||
rifle1.setMaxDamage(1250);
|
||||
rifle1.setWeaponType(0);
|
||||
|
||||
inventory.add(rifle1);
|
||||
|
||||
SWGObject pistol = core.objectService.createObject("object/weapon/ranged/pistol/shared_pistol_cdef.iff", planet);
|
||||
WeaponObject carbine1 = (WeaponObject) core.objectService.createObject("object/weapon/ranged/carbine/shared_carbine_cdef.iff", planet);
|
||||
carbine1.setIntAttribute("required_combat_level", 90);
|
||||
carbine1.setAttackSpeed((float) 0.6);
|
||||
carbine1.setMaxRange(50);
|
||||
carbine1.setDamageType("energy");
|
||||
carbine1.setMinDamage(600);
|
||||
carbine1.setMaxDamage(937);
|
||||
carbine1.setWeaponType(1);
|
||||
|
||||
inventory.add(carbine1);
|
||||
|
||||
WeaponObject pistol = (WeaponObject) core.objectService.createObject("object/weapon/ranged/pistol/shared_pistol_cdef.iff", planet);
|
||||
pistol.setIntAttribute("required_combat_level", 90);
|
||||
pistol.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", (float) 0.4);
|
||||
pistol.setStringAttribute("class_required", "None");
|
||||
pistol.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
pistol.setStringAttribute("cat_wpn_damage.damage", "400-559");
|
||||
pistol.setAttackSpeed((float) 0.4);
|
||||
pistol.setMaxRange(35);
|
||||
pistol.setDamageType("energy");
|
||||
pistol.setMinDamage(400);
|
||||
pistol.setMaxDamage(625);
|
||||
pistol.setWeaponType(2);
|
||||
|
||||
inventory.add(pistol);
|
||||
return;
|
||||
|
||||
/* == Disabled until Elemental Damage is implemented. ==
|
||||
SWGObject heavy = core.objectService.createObject("object/weapon/ranged/heavy/shared_som_lava_cannon_generic.iff", planet);
|
||||
case 33:
|
||||
WeaponObject heavy = (WeaponObject) core.objectService.createObject("object/weapon/ranged/heavy/shared_som_lava_cannon_generic.iff", planet);
|
||||
heavy.setIntAttribute("required_combat_level", 90);
|
||||
heavy.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
|
||||
heavy.setStringAttribute("class_required", "Commando");
|
||||
heavy.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
|
||||
heavy.setStringAttribute("cat_wpn_damage.damage", "700-1400");
|
||||
|
||||
inventory.add(heavy);*/
|
||||
heavy.setStringAttribute("class_required", "Commando");
|
||||
heavy.setDamageType("kinetic");
|
||||
heavy.setMinDamage(700);
|
||||
heavy.setMaxDamage(1400);
|
||||
heavy.setMaxRange(64);
|
||||
heavy.setAttackSpeed(1);
|
||||
heavy.setElementalType("heat");
|
||||
heavy.setElementalDamage(200);
|
||||
heavy.setWeaponType(12);
|
||||
|
||||
inventory.add(heavy);
|
||||
return;
|
||||
case 40:
|
||||
TangibleObject ring = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet);
|
||||
|
||||
@@ -278,14 +278,8 @@ public class EquipmentService implements INetworkDispatch {
|
||||
|
||||
private int getWeaponCriticalChance(CreatureObject actor, SWGObject item) {
|
||||
int weaponCriticalChance = 0;
|
||||
String weaponCriticalSkillMod = (core.scriptService.getMethod("scripts/equipment/", "weapon_critical", item.getStringAttribute("cat_wpn_damage.wpn_category")).__call__().asString());
|
||||
|
||||
if(weaponCriticalSkillMod.contains(" "))
|
||||
weaponCriticalSkillMod.replace(" ", "");
|
||||
|
||||
if(weaponCriticalSkillMod.contains("-"))
|
||||
weaponCriticalSkillMod.replace("-", "");
|
||||
|
||||
String weaponCriticalSkillMod = (core.scriptService.getMethod("scripts/equipment/", "weapon_critical", "weap_" + item.getStringAttribute("cat_wpn_damage.wpn_category").replace("@obj_attr_n:wpn_category_", "")).__call__().asString());
|
||||
|
||||
if(actor.getSkillMod(weaponCriticalSkillMod) != null)
|
||||
weaponCriticalChance = actor.getSkillModBase(weaponCriticalSkillMod);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user