Abnormal correlation between the fire rate of robot skills and handheld animations

dzxmsf

Refugee
Version
V3
Platform
Windows
First, list the original code:

<passive_effect name="RoundsPerMinute" operation="perc_add" level="1,2,3,4,5" value=".125,.25,.375,.5,.5" tags="turretMelee"/>
<passive_effect name="ReloadSpeedMultiplier" operation="perc_add" level="4,5" value="0.1,0.2" tags="perkTurrets"/>

The problem with this coding approach is that the attack animations for the robot sledgehammer and robot turret cannot be played at an extremely fast speed when held in hand.

For the robot sledgehammer, after percentage-based attack speed buffs stack past a certain point, its swings per minute while held manually are lower than when it is deployed stationary.However, this issue does not occur if the same attacks per minute are achieved by directly modifying the base attack speed value instead of percentage bonuses.

When the robot turret's fire rate exceeds 105, it does not suffer from the reduced attack speed seen in handheld weapons, but its firing animation becomes out of sync with its actual firing rate.

Regarding the robot turret, I recommend implementing attack speed boost abilities with the following coding logic.

<append xpath="//perk[@name='perkTurrets']">
<effect_group>
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1,2,3,4,5" value=".15,.35,.55,.75,.75" tags="turretMelee"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1,2,3,4,5" value=".3,.7,1.1,1.5,1.5" tags="deployed">
<requirement name="ItemHasTags" tags="turretRanged"/></passive_effect>
</effect_group>
</append>

<set xpath="//book[@name='perkTechJunkie7Hydraulics']/effect_group">
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1" value=".05" tags="turretMelee"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1" value=".1" tags="deployed">
<requirement name="ItemHasTags" tags="turretRanged"/></passive_effect>
</set>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
This is the stats code for the robot turret; I hope adjustments can be made to its fire rate parameters.

<stats>
<!-- Base_Random_Roll -->
<stat name="EntityDamage" value="0,0,1,0,.1"/>
<stat name="MagazineSize" value="0,0,1,0,.1"/>
<stat name="RoundsPerMinute" value="0,0,1,0,.02"/>
<stat name="DamageFalloffRange" value="0,0,1,0,.1"/>
<stat name="DegradationMax" value="0,0,1,0,.1"/>
<!-- Q1_Boosted_Rolls -->
<stat name="EntityDamage" value="1,0,.3,.1,.5"/>
<stat name="MagazineSize" value="1,0,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="1,0,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="1,0,.3,.1,.5"/>
<stat name="DegradationMax" value="1,0,.3,.1,.5"/>
<!-- Q2_Boosted_Rolls -->
<stat name="EntityDamage" value="2,10,.3,.1,.5"/>
<stat name="MagazineSize" value="2,10,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="2,10,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="2,10,.3,.1,.5"/>
<stat name="DegradationMax" value="2,10,.3,.1,.5"/>
<!-- Q3_Boosted_Rolls -->
<stat name="EntityDamage" value="3,11,.3,.1,.5"/>
<stat name="MagazineSize" value="3,11,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="3,11,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="3,11,.3,.1,.5"/>
<stat name="DegradationMax" value="3,11,.3,.1,.5"/>
<!-- Q4_Boosted_Rolls -->
<stat name="EntityDamage" value="4,12,.3,.1,.5"/>
<stat name="MagazineSize" value="4,12,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="4,12,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="4,12,.3,.1,.5"/>
<stat name="DegradationMax" value="4,12,.3,.1,.5"/>
<!-- Q5_Boosted_Rolls -->
<stat name="EntityDamage" value="5,14,.3,.1,.5"/>
<stat name="MagazineSize" value="5,14,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="5,14,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="5,14,.3,.1,.5"/>
<stat name="DegradationMax" value="5,14,.3,.1,.5"/>
<!-- Q6_Boosted_Rolls -->
<stat name="EntityDamage" value="6,16,.3,.1,.5"/>
<stat name="MagazineSize" value="6,16,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="6,16,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="6,16,.3,.1,.5"/>
<stat name="DegradationMax" value="6,16,.3,.1,.5"/>
<!-- Q6_Boosted_Rolls -->
<stat name="EntityDamage" value="6,20,.3,.5,.7"/>
<stat name="MagazineSize" value="6,20,.3,.5,1"/>
<stat name="RoundsPerMinute" value="6,20,.3,.1,.3"/>
<stat name="DamageFalloffRange" value="6,20,.3,.5,.7"/>
<stat name="DegradationMax" value="6,20,.3,.5,.7"/>
</stats>



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
These are the codes for the three-round burst mod and full-auto mod, and I hope revisions can be made based on them.

<item_modifier name="modGunTriggerGroupBurst3" installable_tags="firingMode,turretRanged" modifier_tags="trigger" blocked_tags="noMods" type="attachment">
<property name="Extends" value="modGeneralMaster"/>
<property name="UnlockedBy" value="modGunTriggerGroupBurst3Schematic"/>
<property name="TraderStageTemplate" value="modsTier2"/>
<property name="CustomIcon" value="modGunTriggerGroupBurst"/>

<effect_group tiered="false">
<passive_effect name="BurstRoundCount" operation="base_set" value="3"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" value=".1"/>
<passive_effect name="IncrementalSpreadMultiplier" operation="perc_add" value=".05"/>
</effect_group>
</item_modifier>

<item_modifier name="modGunTriggerGroupAutomatic" installable_tags="firingMode,turretRanged" modifier_tags="trigger" blocked_tags="noMods" type="attachment">
<property name="Extends" value="modGeneralMaster" param1="CustomIcon"/>
<property name="UnlockedBy" value="modGunTriggerGroupAutomaticSchematic"/>
<property name="TraderStageTemplate" value="modsTier3"/>

<effect_group tiered="false">
<passive_effect name="BurstRoundCount" operation="base_set" value="0"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" value=".12"/>
<passive_effect name="IncrementalSpreadMultiplier" operation="perc_add" value=".06"/>
</effect_group>
</item_modifier>
 
First, list the original code:

<passive_effect name="RoundsPerMinute" operation="perc_add" level="1,2,3,4,5" value=".125,.25,.375,.5,.5" tags="turretMelee"/>
<passive_effect name="ReloadSpeedMultiplier" operation="perc_add" level="4,5" value="0.1,0.2" tags="perkTurrets"/>

The problem with this coding approach is that the attack animations for the robot sledgehammer and robot turret cannot be played at an extremely fast speed when held in hand.

For the robot sledgehammer, after percentage-based attack speed buffs stack past a certain point, its swings per minute while held manually are lower than when it is deployed stationary.However, this issue does not occur if the same attacks per minute are achieved by directly modifying the base attack speed value instead of percentage bonuses.

When the robot turret's fire rate exceeds 105, it does not suffer from the reduced attack speed seen in handheld weapons, but its firing animation becomes out of sync with its actual firing rate.

Regarding the robot turret, I recommend implementing attack speed boost abilities with the following coding logic.

<append xpath="//perk[@name='perkTurrets']">
<effect_group>
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1,2,3,4,5" value=".15,.35,.55,.75,.75" tags="turretMelee"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1,2,3,4,5" value=".3,.7,1.1,1.5,1.5" tags="deployed">
<requirement name="ItemHasTags" tags="turretRanged"/></passive_effect>
</effect_group>
</append>

<set xpath="//book[@name='perkTechJunkie7Hydraulics']/effect_group">
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1" value=".05" tags="turretMelee"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" level="1" value=".1" tags="deployed">
<requirement name="ItemHasTags" tags="turretRanged"/></passive_effect>
</set>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
This is the stats code for the robot turret; I hope adjustments can be made to its fire rate parameters.

<stats>
<!-- Base_Random_Roll -->
<stat name="EntityDamage" value="0,0,1,0,.1"/>
<stat name="MagazineSize" value="0,0,1,0,.1"/>
<stat name="RoundsPerMinute" value="0,0,1,0,.02"/>
<stat name="DamageFalloffRange" value="0,0,1,0,.1"/>
<stat name="DegradationMax" value="0,0,1,0,.1"/>
<!-- Q1_Boosted_Rolls -->
<stat name="EntityDamage" value="1,0,.3,.1,.5"/>
<stat name="MagazineSize" value="1,0,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="1,0,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="1,0,.3,.1,.5"/>
<stat name="DegradationMax" value="1,0,.3,.1,.5"/>
<!-- Q2_Boosted_Rolls -->
<stat name="EntityDamage" value="2,10,.3,.1,.5"/>
<stat name="MagazineSize" value="2,10,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="2,10,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="2,10,.3,.1,.5"/>
<stat name="DegradationMax" value="2,10,.3,.1,.5"/>
<!-- Q3_Boosted_Rolls -->
<stat name="EntityDamage" value="3,11,.3,.1,.5"/>
<stat name="MagazineSize" value="3,11,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="3,11,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="3,11,.3,.1,.5"/>
<stat name="DegradationMax" value="3,11,.3,.1,.5"/>
<!-- Q4_Boosted_Rolls -->
<stat name="EntityDamage" value="4,12,.3,.1,.5"/>
<stat name="MagazineSize" value="4,12,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="4,12,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="4,12,.3,.1,.5"/>
<stat name="DegradationMax" value="4,12,.3,.1,.5"/>
<!-- Q5_Boosted_Rolls -->
<stat name="EntityDamage" value="5,14,.3,.1,.5"/>
<stat name="MagazineSize" value="5,14,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="5,14,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="5,14,.3,.1,.5"/>
<stat name="DegradationMax" value="5,14,.3,.1,.5"/>
<!-- Q6_Boosted_Rolls -->
<stat name="EntityDamage" value="6,16,.3,.1,.5"/>
<stat name="MagazineSize" value="6,16,.3,.1,.5"/>
<stat name="RoundsPerMinute" value="6,16,.3,.02,.1"/>
<stat name="DamageFalloffRange" value="6,16,.3,.1,.5"/>
<stat name="DegradationMax" value="6,16,.3,.1,.5"/>
<!-- Q6_Boosted_Rolls -->
<stat name="EntityDamage" value="6,20,.3,.5,.7"/>
<stat name="MagazineSize" value="6,20,.3,.5,1"/>
<stat name="RoundsPerMinute" value="6,20,.3,.1,.3"/>
<stat name="DamageFalloffRange" value="6,20,.3,.5,.7"/>
<stat name="DegradationMax" value="6,20,.3,.5,.7"/>
</stats>



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
These are the codes for the three-round burst mod and full-auto mod, and I hope revisions can be made based on them.

<item_modifier name="modGunTriggerGroupBurst3" installable_tags="firingMode,turretRanged" modifier_tags="trigger" blocked_tags="noMods" type="attachment">
<property name="Extends" value="modGeneralMaster"/>
<property name="UnlockedBy" value="modGunTriggerGroupBurst3Schematic"/>
<property name="TraderStageTemplate" value="modsTier2"/>
<property name="CustomIcon" value="modGunTriggerGroupBurst"/>

<effect_group tiered="false">
<passive_effect name="BurstRoundCount" operation="base_set" value="3"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" value=".1"/>
<passive_effect name="IncrementalSpreadMultiplier" operation="perc_add" value=".05"/>
</effect_group>
</item_modifier>

<item_modifier name="modGunTriggerGroupAutomatic" installable_tags="firingMode,turretRanged" modifier_tags="trigger" blocked_tags="noMods" type="attachment">
<property name="Extends" value="modGeneralMaster" param1="CustomIcon"/>
<property name="UnlockedBy" value="modGunTriggerGroupAutomaticSchematic"/>
<property name="TraderStageTemplate" value="modsTier3"/>

<effect_group tiered="false">
<passive_effect name="BurstRoundCount" operation="base_set" value="0"/>
<passive_effect name="RoundsPerMinute" operation="perc_add" value=".12"/>
<passive_effect name="IncrementalSpreadMultiplier" operation="perc_add" value=".06"/>
</effect_group>
</item_modifier>

Hello dzxmsf,

at which speed did you encounter the issue for the robotic sledge?

For the turret I've noticed a sync issue at fire rates of 136 attacks a minute.
I'll create a ticket for this specific animation issue.

Best,
Revi
 
Hello dzxmsf,

at which speed did you encounter the issue for the robotic sledge?

For the turret I've noticed a sync issue at fire rates of 136 attacks a minute.
I'll create a ticket for this specific animation issue.

Best,
Revi
Let me put it this way: the Robot Sledgehammer has a base attack speed of 30, which can be boosted to 45 via skills. Its attack rate is slightly lower when held in hand than when deployed. However, this discrepancy disappears if the base attack speed is set directly to 45.
 
Let me put it this way: the Robot Sledgehammer has a base attack speed of 30, which can be boosted to 45 via skills. Its attack rate is slightly lower when held in hand than when deployed. However, this discrepancy disappears if the base attack speed is set directly to 45.

When I put both turrets site to site I don’t see any discrepancy.
The turret allows for a max. of ~ 60 rpm.
No matter if placed or handheld the 60 are very consistent across both modes.
Either the difference is barely noticeable or something else causes the discrepancy you have noticed.
Where you testing on a dedicated server or peer to peer with higher latency?
 
When I put both turrets site to site I don’t see any discrepancy.
The turret allows for a max. of ~ 60 rpm.
No matter if placed or handheld the 60 are very consistent across both modes.
Either the difference is barely noticeable or something else causes the discrepancy you have noticed.
Where you testing on a dedicated server or peer to peer with higher latency?
Let's disregard this issue; it stems from version 2.0. I have discovered a new problem. Version 3.0 introduced a new stat tag system, which drastically boosted weapon stats. The robotic turret can theoretically reach a maximum range of 25 meters. However, there is a flaw with this turret: its effective maximum range after deployment is capped at only 15 meters, meaning it will not aim at or fire upon targets beyond 15 meters once placed.咱们先忽略这个问题,它是由 2.0 版本引起的。我发现了一个新问题。3.0 版本引入了一套全新的属性标签系统,这大幅提升了武器的各项属性。自动炮塔理论上最大射程可达 25 米。但该炮塔存在一个缺陷:部署后其实际最大射程被限制在仅 15 米,这意味着一旦放置,它不会瞄准或攻击 15 米以外的目标。
 
When I put both turrets site to site I don’t see any discrepancy.
The turret allows for a max. of ~ 60 rpm.
No matter if placed or handheld the 60 are very consistent across both modes.
Either the difference is barely noticeable or something else causes the discrepancy you have noticed.
Where you testing on a dedicated server or peer to peer with higher latency?
Simply adjusting the deployed range alone is insufficient. The "stats" code only increases the damage falloff distance without raising the maximum range value. As a result, the robotic turret's maximum effective range is restricted by the ammunition's maximum range, and enemies beyond the ammo range will not be targeted or fired upon.
 
When I put both turrets site to site I don’t see any discrepancy.
The turret allows for a max. of ~ 60 rpm.
No matter if placed or handheld the 60 are very consistent across both modes.
Either the difference is barely noticeable or something else causes the discrepancy you have noticed.
Where you testing on a dedicated server or peer to peer with higher latency?
In short, the "stats" system only increases the firing range when holding the robotic turret in hand. Once deployed, its range is limited by two factors simultaneously: the MaxDistance property under entityclasses/junkTurretGun, and the MaxRange values of ammoJunkTurretRegular, ammoJunkTurretShell and ammoJunkTurretAP ammunition entries.简而言之,“状态”系统仅在手持机械炮塔时扩大其射程。一旦部署,其射程会同时受两个因素限制:分别是实体类/junkTurretGun 下的最大距离属性,以及ammoJunkTurretRegular、ammoJunkTurretShell 和 ammoJunkTurretAP 弹药条目的最大射程数值。
Post automatically merged:

When I put both turrets site to site I don’t see any discrepancy.
The turret allows for a max. of ~ 60 rpm.
No matter if placed or handheld the 60 are very consistent across both modes.
Either the difference is barely noticeable or something else causes the discrepancy you have noticed.
Where you testing on a dedicated server or peer to peer with higher latency?
The former sets the upper limit, while the latter sets the lower limit.
 
@dzxmsf please don't change topics on a thread to address other issues. Keep each thread to one topic only.

If you want to address a different issue we'd appreciate if you create a new thread.
We'll then look into your report.
 
Back
Top