Add Summoner Curse Skills and Lightning Shock Skill Fix#738
Add Summoner Curse Skills and Lightning Shock Skill Fix#738ze-dom wants to merge 3 commits intoMUnique:masterfrom
Conversation
| var hitChance = attackRound < areaSkillSettings.MinimumNumberOfHitsPerTarget | ||
| ? 1.0 | ||
| : Math.Min(areaSkillSettings.HitChancePerDistanceMultiplier, Math.Pow(areaSkillSettings.HitChancePerDistanceMultiplier, player.GetDistanceTo(target))); |
There was a problem hiding this comment.
Pretty sure this is not accurate for Flame and Twister. Those may sometimes not hit at all. Will check it another time. For now I've kept it as it was.
There was a problem hiding this comment.
Yea, it's hard to replicate the exact same logic on server side. Flame and Twisters hits were originally calculated on the client side, when rendering each frame(!), depending on the actual (random) animation. So, increasing the frame rate from 25 to 60 fps led to a higher chance of hits 😄
| currentTarget = nextTarget; | ||
| } | ||
|
|
||
| await movableTarget.MoveAsync(currentTarget).ConfigureAwait(false); |
| await observable.ForEachWorldObserverAsync<IObjectMovedPlugIn>(p => p.ObjectMovedAsync(walkSupporter, MoveType.Instant), true).ConfigureAwait(false); | ||
| } | ||
| } | ||
| } |
| { | ||
| return false; | ||
| } | ||
| var skipModifier = skillEntry.Skill.SkipElementalModifier; |
| return; | ||
| } | ||
|
|
||
| var multiplier = magicEffectDefinition.Number == ExplosionMagicEffectNumber ? attacker.Attributes[Stats.BleedingDamageMultiplier] : 0.6f; |
| await this._attackAction.AttackAsync(player, extraTargetId, PollutionSkillId, point, rotation).ConfigureAwait(false); | ||
| } | ||
| }); | ||
| } |
There was a problem hiding this comment.
emu: ObjUseSkill.cpp, user.cpp, zTeamS6.3: ObjectUseSkill.cpp, user.cpp
64-59 = 5
Video of skill display:
https://www.youtube.com/watch?v=Gpmxlw3kjsc
| skill.SkipElementalModifier = true; | ||
| skill.MagicEffectDef = this.CreateEffect(ElementalType.Ice, MagicEffectNumber.Iced, Stats.IsIced, 2); | ||
| return; | ||
| } |
| isStunnedPowerUpDefinition.Boost = this.Context.CreateNew<PowerUpDefinitionValue>(); | ||
| isStunnedPowerUpDefinition.Boost.ConstantValue.Value = 1; | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
Didn't add any duration because from what I've seen so far the effect is not default to any skill, so it's more called in an ad hoc fashion.
|
I want to implement a stun mechanic with a percentage chance and a fixed duration. // stun chance (example: 20%) // generate random number between 0 and 1 // check if stun should be applied |
| this.CreateSkill(SkillNumber.Pollution, "Pollution", CharacterClasses.AllSummoners, DamageType.Curse, 80, 6, 15, 120, energyRequirement: 115, elementalModifier: ElementalType.Lightning); // Book of Lagle's skill | ||
| this.CreateSkill(SkillNumber.LightningShock, "Lightning Shock", CharacterClasses.AllSummoners, DamageType.Wizardry, 95, 6, 7, 115, energyRequirement: 823, elementalModifier: ElementalType.Lightning); | ||
| this.CreateSkill(SkillNumber.Explosion223, "Explosion", CharacterClasses.AllSummoners, DamageType.Curse, 40, 6, 5, 90, energyRequirement: 100, elementalModifier: ElementalType.Fire, skillType: SkillType.AreaSkillAutomaticHits); // Book of Samut's skill | ||
| this.AddAreaSkillSettings(SkillNumber.Explosion223, false, 0, 0, 0, effectRange: 2); |
| this.CreateSkill(SkillNumber.Requiem, "Requiem", CharacterClasses.AllSummoners, DamageType.Curse, 65, 6, 10, 110, energyRequirement: 99, elementalModifier: ElementalType.Wind, skillType: SkillType.AreaSkillAutomaticHits); // Book of Neil's skill | ||
| this.AddAreaSkillSettings(SkillNumber.Requiem, false, 0, 0, 0, effectRange: 2); | ||
| this.CreateSkill(SkillNumber.Pollution, "Pollution", CharacterClasses.AllSummoners, DamageType.Curse, 80, 6, 15, 120, energyRequirement: 115, elementalModifier: ElementalType.Lightning, skillType: SkillType.AreaSkillAutomaticHits); // Book of Lagle's skill | ||
| this.AddAreaSkillSettings(SkillNumber.Pollution, false, 0, 0, 0, minimumHitsPerAttack: 4, maximumHitsPerAttack: 8, effectRange: 3); |
| this.CreateSkill(SkillNumber.Pollution, "Pollution", CharacterClasses.AllSummoners, DamageType.Curse, 80, 6, 15, 120, energyRequirement: 115, elementalModifier: ElementalType.Lightning, skillType: SkillType.AreaSkillAutomaticHits); // Book of Lagle's skill | ||
| this.AddAreaSkillSettings(SkillNumber.Pollution, false, 0, 0, 0, minimumHitsPerAttack: 4, maximumHitsPerAttack: 8, effectRange: 3); | ||
| this.CreateSkill(SkillNumber.LightningShock, "Lightning Shock", CharacterClasses.AllSummoners, DamageType.Wizardry, 95, 6, 7, 115, energyRequirement: 823, elementalModifier: ElementalType.Lightning, skillType: SkillType.AreaSkillAutomaticHits); | ||
| this.AddAreaSkillSettings(SkillNumber.LightningShock, false, 0, 0, 0, minimumHitsPerAttack: 5, maximumHitsPerAttack: 12, useTargetAreaFilter: true, targetAreaDiameter: 14); |
| this.AddMasterSkillDefinition(SkillNumber.LightningTomeMastery, SkillNumber.LightningTomeStren, SkillNumber.Undefined, 2, 3, SkillNumber.Undefined, 20, Formula181); | ||
| this.AddPassiveMasterSkillDefinition(SkillNumber.FireTomeMastery, Stats.BleedingDamageMultiplier, AggregateType.AddRaw, $"{Formula181} / 100", 3, 2, SkillNumber.FireTomeStrengthener); | ||
| this.AddPassiveMasterSkillDefinition(SkillNumber.WindTomeMastery, Stats.StunChance, AggregateType.AddRaw, $"{Formula120} / 100", 3, 2, SkillNumber.WindTomeStrengthener); | ||
| this.AddPassiveMasterSkillDefinition(SkillNumber.LightningTomeMastery, Stats.PollutionMoveTargetChance, AggregateType.AddRaw, $"{Formula181} / 100", 3, 2, SkillNumber.LightningTomeStren); |
There was a problem hiding this comment.
| this.AddMasterSkillDefinition(SkillNumber.WindTomeMastery, SkillNumber.WindTomeStrengthener, SkillNumber.Undefined, 2, 3, SkillNumber.Undefined, 20, Formula120); | ||
| this.AddMasterSkillDefinition(SkillNumber.LightningTomeMastery, SkillNumber.LightningTomeStren, SkillNumber.Undefined, 2, 3, SkillNumber.Undefined, 20, Formula181); | ||
| this.AddPassiveMasterSkillDefinition(SkillNumber.FireTomeMastery, Stats.BleedingDamageMultiplier, AggregateType.AddRaw, $"{Formula181} / 100", 3, 2, SkillNumber.FireTomeStrengthener); | ||
| this.AddPassiveMasterSkillDefinition(SkillNumber.WindTomeMastery, Stats.StunChance, AggregateType.AddRaw, $"{Formula120} / 100", 3, 2, SkillNumber.WindTomeStrengthener); |
There was a problem hiding this comment.
| this.AddMasterSkillDefinition(SkillNumber.FireTomeMastery, SkillNumber.FireTomeStrengthener, SkillNumber.Undefined, 2, 3, SkillNumber.Undefined, 20, Formula181); | ||
| this.AddMasterSkillDefinition(SkillNumber.WindTomeMastery, SkillNumber.WindTomeStrengthener, SkillNumber.Undefined, 2, 3, SkillNumber.Undefined, 20, Formula120); | ||
| this.AddMasterSkillDefinition(SkillNumber.LightningTomeMastery, SkillNumber.LightningTomeStren, SkillNumber.Undefined, 2, 3, SkillNumber.Undefined, 20, Formula181); | ||
| this.AddPassiveMasterSkillDefinition(SkillNumber.FireTomeMastery, Stats.BleedingDamageMultiplier, AggregateType.AddRaw, $"{Formula181} / 100", 3, 2, SkillNumber.FireTomeStrengthener); |
There was a problem hiding this comment.
| magicEffect.Duration = this.Context.CreateNew<PowerUpDefinitionValue>(); | ||
|
|
||
| // Damage is applied 5 times for every second | ||
| magicEffect.Duration.ConstantValue.Value = 5; |
| magicEffect.Duration = this.Context.CreateNew<PowerUpDefinitionValue>(); | ||
|
|
||
| // Damage is applied 5 times for every second | ||
| magicEffect.Duration.ConstantValue.Value = 5; |
| this.Attacker = attacker; | ||
| this.Owner = owner; | ||
| this._damage = damage; | ||
| this._damageTimer = new Timer(1000); |
There was a problem hiding this comment.
emu, zTeamS6.3
While poison is every 3s, this one seems to be every second. Check the skill videos at muonlinefanz.com (they are cut short, but you can see the 2nd dmg coming up).
Check this file. I do that there: |
To-do
Developments
Skill.SkipElementalModifierto bypass element resistance checks