mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Merge branch 'exp' into 'master'
Fix combat xp from summoning See merge request 2009scape/2009scape!332
This commit is contained in:
commit
831adb5e8a
36 changed files with 86 additions and 178 deletions
|
|
@ -51,3 +51,4 @@
|
||||||
- Fixed Typo in Professor Oddenstein's dialogue
|
- Fixed Typo in Professor Oddenstein's dialogue
|
||||||
- Random Events can no longer spawn in the wilderness.
|
- Random Events can no longer spawn in the wilderness.
|
||||||
- Fairy rings emit a sound when teleporting.
|
- Fairy rings emit a sound when teleporting.
|
||||||
|
- Summoning familiars now grant combat xp when attacking
|
||||||
|
|
@ -336,4 +336,18 @@ public final class BattleState {
|
||||||
public Entity getAttacker() {
|
public Entity getAttacker() {
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getTotalDamage() {
|
||||||
|
int hit = Math.max(estimatedHit, 0) + Math.max(secondaryHit, 0);
|
||||||
|
|
||||||
|
if (targets != null) {
|
||||||
|
for (BattleState s : targets) {
|
||||||
|
if (s != null) {
|
||||||
|
hit += Math.max(s.getEstimatedHit(), 0) + Math.max(s.getSecondaryHit(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return hit;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -146,7 +146,6 @@ public final class ChinchompaSwingHandler extends RangeSwingHandler {
|
||||||
s.getVictim().animate(s.getVictim().getProperties().getDefenceAnimation());
|
s.getVictim().animate(s.getVictim().getProperties().getDefenceAnimation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,5 @@ public final class AncientMaceSpecialHandler extends MeleeSwingHandler implement
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,5 @@ public final class BackstabSpecialHandler extends MeleeSwingHandler implements P
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ public final class ChainhitSpecialHandler extends RangeSwingHandler implements P
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
int speed = (int) (32 + (entity.getLocation().getDistance(victim.getLocation()) * 5));
|
int speed = (int) (32 + (entity.getLocation().getDistance(victim.getLocation()) * 5));
|
||||||
Projectile.create(entity, victim, 258, 40, 36, 32, speed, 5, 11).send();
|
Projectile.create(entity, victim, 258, 40, 36, 32, speed, 5, 11).send();
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,5 @@ public final class CleaveSpecialHandler extends MeleeSwingHandler implements Plu
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,5 @@ public final class ClobberSpecialHandler extends MeleeSwingHandler implements Pl
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -146,6 +146,5 @@ public final class DescentOfDarknessSpecialHandler extends RangeSwingHandler imp
|
||||||
@Override
|
@Override
|
||||||
public void visualizeImpact(Entity entity, Entity victim, BattleState state) {
|
public void visualizeImpact(Entity entity, Entity victim, BattleState state) {
|
||||||
victim.visualize(victim.getProperties().getDefenceAnimation(), state.isFrozen() ? DRAGON_IMPACT : DARKNESS_IMPACT);
|
victim.visualize(victim.getProperties().getDefenceAnimation(), state.isFrozen() ? DRAGON_IMPACT : DARKNESS_IMPACT);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,5 @@ public final class EnergyDrainSpecialHandler extends MeleeSwingHandler implement
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.animate(ANIMATION);
|
entity.animate(ANIMATION);
|
||||||
victim.graphics(GRAPHIC);
|
victim.graphics(GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,5 @@ public final class FeintSpecialHandler extends MeleeSwingHandler implements Plug
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.animate(ANIMATION);
|
entity.animate(ANIMATION);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,6 @@ public final class HealingBladeSpecialHandler extends MeleeSwingHandler implemen
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,5 @@ public final class IceCleaveSpecialHandler extends MeleeSwingHandler implements
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,5 @@ public final class ImpaleSpecialHandler extends MeleeSwingHandler implements Plu
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,5 @@ public final class JudgementSpecialHandler extends MeleeSwingHandler implements
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,5 @@ public final class PowershotSpecialHandler extends RangeSwingHandler implements
|
||||||
entity.visualize(state.getRangeWeapon().getAnimation(), GRAPHIC);
|
entity.visualize(state.getRangeWeapon().getAnimation(), GRAPHIC);
|
||||||
int speed = (int) (46 + (entity.getLocation().getDistance(victim.getLocation()) * 5));
|
int speed = (int) (46 + (entity.getLocation().getDistance(victim.getLocation()) * 5));
|
||||||
Projectile.create(entity, victim, 249, 40, 36, 45, speed, 5, 11).send();
|
Projectile.create(entity, victim, 249, 40, 36, 45, speed, 5, 11).send();
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,6 @@ public final class PowerstabSpecialHandler extends MeleeSwingHandler implements
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,5 @@ public final class PunctureSpecialHandler extends MeleeSwingHandler implements P
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,6 @@ public final class SaradominsLightningHandler extends MeleeSwingHandler implemen
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,5 @@ public final class SeverSpecialHandler extends MeleeSwingHandler implements Plug
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,5 @@ public final class ShatterSpecialHandler extends MeleeSwingHandler implements Pl
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,5 @@ public final class SliceAndDiceSpecialHandler extends MeleeSwingHandler implemen
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,5 @@ public final class SmashSpecialHandler extends MeleeSwingHandler implements Plug
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,5 @@ public final class SnapshotSpecialHandler extends RangeSwingHandler implements P
|
||||||
Projectile.create(entity, victim, 249, 40, 36, 20, speed, 15, 11).send();
|
Projectile.create(entity, victim, 249, 40, 36, 20, speed, 15, 11).send();
|
||||||
speed = (int) (32 + (entity.getLocation().getDistance(victim.getLocation()) * 10));
|
speed = (int) (32 + (entity.getLocation().getDistance(victim.getLocation()) * 10));
|
||||||
Projectile.create(entity, victim, 249, 40, 36, 50, speed, 15, 11).send();
|
Projectile.create(entity, victim, 249, 40, 36, 50, speed, 15, 11).send();
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,5 @@ public final class SnipeSpecialHandler extends RangeSwingHandler implements Plug
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.animate(ANIMATION);
|
entity.animate(ANIMATION);
|
||||||
Projectile.create(entity, victim, 698, 36, 25, 35, 72).send();
|
Projectile.create(entity, victim, 698, 36, 25, 35, 72).send();
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,6 @@ public final class SpearWallSpecialHandler extends MeleeSwingHandler implements
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,6 @@ public final class SweepSpecialHandler extends MeleeSwingHandler implements Plug
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,5 @@ public final class WarstrikeSpecialHandler extends MeleeSwingHandler implements
|
||||||
@Override
|
@Override
|
||||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||||
entity.visualize(ANIMATION, GRAPHIC);
|
entity.visualize(ANIMATION, GRAPHIC);
|
||||||
addExperience(entity, victim, state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -310,6 +310,7 @@ public abstract class MagicSpell implements Plugin<SpellType> {
|
||||||
* @param hit The hit.
|
* @param hit The hit.
|
||||||
*/
|
*/
|
||||||
public void addExperience(Entity entity, int hit) {
|
public void addExperience(Entity entity, int hit) {
|
||||||
|
entity.getSkills().addExperience(Skills.MAGIC, experience, true);
|
||||||
if (!(entity instanceof Player) || hit < 1) {
|
if (!(entity instanceof Player) || hit < 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -417,6 +417,7 @@ class CombatPulse(
|
||||||
entity.faceTemporary(victim, 1) // face back to entity.
|
entity.faceTemporary(victim, 1) // face back to entity.
|
||||||
}
|
}
|
||||||
handler.adjustBattleState(entity, victim!!, state)
|
handler.adjustBattleState(entity, victim!!, state)
|
||||||
|
handler.addExperience(entity, victim, state)
|
||||||
handler.visualize(entity, victim, state)
|
handler.visualize(entity, victim, state)
|
||||||
if (delay - 1 < 1) {
|
if (delay - 1 < 1) {
|
||||||
handler.visualizeImpact(entity, victim, state)
|
handler.visualizeImpact(entity, victim, state)
|
||||||
|
|
|
||||||
|
|
@ -407,7 +407,55 @@ abstract class CombatSwingHandler(var type: CombatStyle?) {
|
||||||
* @param victim The victim.
|
* @param victim The victim.
|
||||||
* @param state The battle state.
|
* @param state The battle state.
|
||||||
*/
|
*/
|
||||||
open fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {}
|
open fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
|
if (entity == null || (victim is Player && entity is Player && entity.asPlayer().ironmanManager.isIronman)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var player: Player
|
||||||
|
var attStyle: Int
|
||||||
|
|
||||||
|
when(entity)
|
||||||
|
{
|
||||||
|
is Familiar -> {player = entity.owner; attStyle = entity.attackStyle}
|
||||||
|
is Player -> {player = entity; attStyle = entity.properties.attackStyle.style}
|
||||||
|
else -> return
|
||||||
|
}
|
||||||
|
if (state != null) {
|
||||||
|
val hit = state.totalDamage
|
||||||
|
var skill = -1
|
||||||
|
when (attStyle) {
|
||||||
|
WeaponInterface.STYLE_DEFENSIVE -> skill = Skills.DEFENCE
|
||||||
|
WeaponInterface.STYLE_ACCURATE -> skill = Skills.ATTACK
|
||||||
|
WeaponInterface.STYLE_AGGRESSIVE -> skill = Skills.STRENGTH
|
||||||
|
WeaponInterface.STYLE_CONTROLLED -> {
|
||||||
|
var experience = hit * EXPERIENCE_MOD
|
||||||
|
experience /= 3.0
|
||||||
|
player.skills.addExperience(Skills.ATTACK, experience, true)
|
||||||
|
player.skills.addExperience(Skills.STRENGTH, experience, true)
|
||||||
|
player.skills.addExperience(Skills.DEFENCE, experience, true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
WeaponInterface.STYLE_RANGE_ACCURATE -> skill = Skills.RANGE
|
||||||
|
WeaponInterface.STYLE_RAPID -> skill = Skills.RANGE
|
||||||
|
WeaponInterface.STYLE_LONG_RANGE -> {
|
||||||
|
player.skills.addExperience(Skills.RANGE, hit * (EXPERIENCE_MOD / 2), true)
|
||||||
|
player.skills.addExperience(Skills.DEFENCE, hit * (EXPERIENCE_MOD / 2), true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
WeaponInterface.STYLE_CAST -> skill = Skills.MAGIC
|
||||||
|
WeaponInterface.STYLE_DEFENSIVE_CAST -> {
|
||||||
|
player.skills.addExperience(Skills.MAGIC, hit * 1.33, true)
|
||||||
|
player.skills.addExperience(Skills.DEFENCE, hit.toDouble(), true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skill < 0) return
|
||||||
|
player.skills.addExperience(skill, hit * EXPERIENCE_MOD, true)
|
||||||
|
player.skills.addExperience(Skills.HITPOINTS, hit * 1.33, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the formated hit.
|
* Gets the formated hit.
|
||||||
|
|
|
||||||
|
|
@ -111,14 +111,10 @@ open class MagicSwingHandler
|
||||||
|
|
||||||
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
||||||
state!!.spell.visualize(entity, victim)
|
state!!.spell.visualize(entity, victim)
|
||||||
addExperience(entity, victim, state)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
if (state!!.spell != null && entity is Player) {
|
if (state!!.targets == null) {
|
||||||
entity.getSkills().addExperience(Skills.MAGIC, state.spell.experience)
|
|
||||||
}
|
|
||||||
if (state.targets == null) {
|
|
||||||
if (state.estimatedHit > -1) {
|
if (state.estimatedHit > -1) {
|
||||||
victim!!.impactHandler.handleImpact(entity, state.estimatedHit, CombatStyle.MAGIC, state)
|
victim!!.impactHandler.handleImpact(entity, state.estimatedHit, CombatStyle.MAGIC, state)
|
||||||
}
|
}
|
||||||
|
|
@ -224,51 +220,15 @@ open class MagicSwingHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {
|
override fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
if (entity is Player) {
|
if (state?.spell != null && entity is Player) {
|
||||||
if (victim is Player && entity.asPlayer().ironmanManager.isIronman) {
|
state.spell.addExperience(entity, state.totalDamage)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var hit = 0
|
|
||||||
if (state!!.targets != null) {
|
super.addExperience(entity, victim, state)
|
||||||
for (s in state.targets) {
|
|
||||||
if (s != null && s.estimatedHit > 0) {
|
|
||||||
hit += s.estimatedHit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (state.estimatedHit > 0) {
|
|
||||||
hit += state.estimatedHit
|
|
||||||
}
|
|
||||||
if (state.spell != null) {
|
|
||||||
state.spell.addExperience(entity, hit)
|
|
||||||
} else {
|
|
||||||
val famExp = entity.getAttribute("fam-exp", false) && entity.familiarManager.hasFamiliar()
|
|
||||||
if (!famExp) {
|
|
||||||
entity.getSkills().addExperience(Skills.HITPOINTS, hit * 1.33, true)
|
|
||||||
} else {
|
|
||||||
val fam = entity.familiarManager.familiar
|
|
||||||
var skill = Skills.MAGIC
|
|
||||||
when (fam.attackStyle) {
|
|
||||||
WeaponInterface.STYLE_DEFENSIVE -> skill = Skills.DEFENCE
|
|
||||||
WeaponInterface.STYLE_ACCURATE -> skill = Skills.ATTACK
|
|
||||||
WeaponInterface.STYLE_AGGRESSIVE -> skill = Skills.STRENGTH
|
|
||||||
WeaponInterface.STYLE_RANGE_ACCURATE -> skill = Skills.RANGE
|
|
||||||
WeaponInterface.STYLE_CONTROLLED -> {
|
|
||||||
var experience = hit * EXPERIENCE_MOD
|
|
||||||
experience /= 3.0
|
|
||||||
entity.getSkills().addExperience(Skills.ATTACK, experience, true)
|
|
||||||
entity.getSkills().addExperience(Skills.STRENGTH, experience, true)
|
|
||||||
entity.getSkills().addExperience(Skills.DEFENCE, experience, true)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
entity.getSkills().addExperience(skill, hit * EXPERIENCE_MOD, true)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
entity.getSkills().addExperience(Skills.MAGIC, hit * EXPERIENCE_MOD, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun getArmourSet(e: Entity?): ArmourSet? {
|
override fun getArmourSet(e: Entity?): ArmourSet? {
|
||||||
return if (ArmourSet.AHRIM.isUsing(e)) {
|
return if (ArmourSet.AHRIM.isUsing(e)) {
|
||||||
ArmourSet.AHRIM
|
ArmourSet.AHRIM
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,6 @@ open class MeleeSwingHandler
|
||||||
|
|
||||||
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
||||||
entity.animate(entity.properties.attackAnimation)
|
entity.animate(entity.properties.attackAnimation)
|
||||||
addExperience(entity, victim, state)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
|
|
@ -232,50 +231,6 @@ open class MeleeSwingHandler
|
||||||
return 1.0
|
return 1.0
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {
|
|
||||||
if (entity is Player && state != null) {
|
|
||||||
if (victim is Player && entity.asPlayer().ironmanManager.isIronman) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var hit = state.estimatedHit
|
|
||||||
if (hit < 0) {
|
|
||||||
hit = 0
|
|
||||||
}
|
|
||||||
if (state.secondaryHit > 0) {
|
|
||||||
hit += state.secondaryHit
|
|
||||||
}
|
|
||||||
if(state.targets != null) {
|
|
||||||
for (s in state.targets) {
|
|
||||||
if (s != null) {
|
|
||||||
if(s.estimatedHit > 0) {
|
|
||||||
hit += s.estimatedHit
|
|
||||||
}
|
|
||||||
if(s.secondaryHit > 0) {
|
|
||||||
hit += s.secondaryHit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var experience = hit * EXPERIENCE_MOD
|
|
||||||
val famExp = entity.getAttribute("fam-exp", false) && entity.familiarManager.hasFamiliar()
|
|
||||||
if (!famExp) {
|
|
||||||
entity.getSkills().addExperience(Skills.HITPOINTS, hit * 1.33, true)
|
|
||||||
}
|
|
||||||
when (if (famExp) entity.familiarManager.familiar.attackStyle else entity.properties.attackStyle.style) {
|
|
||||||
WeaponInterface.STYLE_ACCURATE -> entity.skills.addExperience(Skills.ATTACK, experience, true)
|
|
||||||
WeaponInterface.STYLE_AGGRESSIVE -> entity.skills.addExperience(Skills.STRENGTH, experience, true)
|
|
||||||
WeaponInterface.STYLE_DEFENSIVE -> entity.skills.addExperience(Skills.DEFENCE, experience, true)
|
|
||||||
WeaponInterface.STYLE_CONTROLLED -> {
|
|
||||||
experience /= 3.0
|
|
||||||
entity.skills.addExperience(Skills.ATTACK, experience, true)
|
|
||||||
entity.skills.addExperience(Skills.STRENGTH, experience, true)
|
|
||||||
entity.skills.addExperience(Skills.DEFENCE, experience, true)
|
|
||||||
}
|
|
||||||
WeaponInterface.STYLE_CAST -> entity.skills.addExperience(Skills.MAGIC, experience, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getArmourSet(e: Entity?): ArmourSet? {
|
override fun getArmourSet(e: Entity?): ArmourSet? {
|
||||||
if (ArmourSet.DHAROK.isUsing(e)) {
|
if (ArmourSet.DHAROK.isUsing(e)) {
|
||||||
return ArmourSet.DHAROK
|
return ArmourSet.DHAROK
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,9 @@ open class MultiSwingHandler(meleeDistance: Boolean, vararg attacks: SwitchAttac
|
||||||
super.adjustBattleState(entity, victim, state)
|
super.adjustBattleState(entity, victim, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {}
|
override fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
|
current.handler.addExperience(entity, victim, state)
|
||||||
|
}
|
||||||
override fun visualizeImpact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
override fun visualizeImpact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
if (current.isUseHandler) {
|
if (current.isUseHandler) {
|
||||||
current.handler.visualizeImpact(entity, victim, state)
|
current.handler.visualizeImpact(entity, victim, state)
|
||||||
|
|
|
||||||
|
|
@ -136,63 +136,6 @@ open class RangeSwingHandler
|
||||||
super.adjustBattleState(entity, victim, state)
|
super.adjustBattleState(entity, victim, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addExperience(entity: Entity?, victim: Entity?, state: BattleState?) {
|
|
||||||
if (entity is Player) {
|
|
||||||
if (victim is Player && entity.asPlayer().ironmanManager.isIronman) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var hit = state!!.estimatedHit
|
|
||||||
if (hit < 0) {
|
|
||||||
hit = 0
|
|
||||||
}
|
|
||||||
if (state.secondaryHit > 0) {
|
|
||||||
hit += state.secondaryHit
|
|
||||||
}
|
|
||||||
if(state.targets != null) {
|
|
||||||
for (s in state.targets) {
|
|
||||||
if (s != null) {
|
|
||||||
if(s.estimatedHit > 0) {
|
|
||||||
hit += s.estimatedHit
|
|
||||||
}
|
|
||||||
if(s.secondaryHit > 0) {
|
|
||||||
hit += s.secondaryHit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val p = entity.asPlayer()
|
|
||||||
val famExp = entity.getAttribute("fam-exp", false) && p.familiarManager.hasFamiliar()
|
|
||||||
if (famExp) {
|
|
||||||
val fam = p.familiarManager.familiar
|
|
||||||
var skill = Skills.RANGE
|
|
||||||
when (fam.attackStyle) {
|
|
||||||
WeaponInterface.STYLE_DEFENSIVE -> skill = Skills.DEFENCE
|
|
||||||
WeaponInterface.STYLE_ACCURATE -> skill = Skills.ATTACK
|
|
||||||
WeaponInterface.STYLE_AGGRESSIVE -> skill = Skills.STRENGTH
|
|
||||||
WeaponInterface.STYLE_RANGE_ACCURATE -> skill = Skills.RANGE
|
|
||||||
WeaponInterface.STYLE_CONTROLLED -> {
|
|
||||||
var experience = hit * EXPERIENCE_MOD
|
|
||||||
experience /= 3.0
|
|
||||||
entity.getSkills().addExperience(Skills.ATTACK, experience, true)
|
|
||||||
entity.getSkills().addExperience(Skills.STRENGTH, experience, true)
|
|
||||||
entity.getSkills().addExperience(Skills.DEFENCE, experience, true)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
WeaponInterface.STYLE_CAST -> skill = Skills.MAGIC
|
|
||||||
}
|
|
||||||
entity.getSkills().addExperience(skill, hit * EXPERIENCE_MOD, true)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
entity.getSkills().addExperience(Skills.HITPOINTS, hit * 1.33, true)
|
|
||||||
if (entity.getProperties().attackStyle.style == WeaponInterface.STYLE_LONG_RANGE) {
|
|
||||||
entity.getSkills().addExperience(Skills.RANGE, hit * (EXPERIENCE_MOD / 2), true)
|
|
||||||
entity.getSkills().addExperience(Skills.DEFENCE, hit * (EXPERIENCE_MOD / 2), true)
|
|
||||||
} else {
|
|
||||||
entity.getSkills().addExperience(Skills.RANGE, hit * EXPERIENCE_MOD, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
||||||
var start: Graphics? = null
|
var start: Graphics? = null
|
||||||
if (state!!.ammunition != null) {
|
if (state!!.ammunition != null) {
|
||||||
|
|
@ -221,7 +164,6 @@ open class RangeSwingHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
entity.visualize(entity.properties.attackAnimation, start)
|
entity.visualize(entity.properties.attackAnimation, start)
|
||||||
addExperience(entity, victim, state)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package rs09.game.system.command.sets
|
package rs09.game.system.command.sets
|
||||||
|
|
||||||
|
import core.game.node.entity.player.link.SpellBookManager
|
||||||
import core.game.node.item.Item
|
import core.game.node.item.Item
|
||||||
import core.plugin.Initializable
|
import core.plugin.Initializable
|
||||||
import org.rs09.consts.Items
|
import org.rs09.consts.Items
|
||||||
|
|
@ -20,6 +21,15 @@ class DevelopmentCommandSet : CommandSet(Command.Privilege.ADMIN) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define("spellbook"){player, args ->
|
||||||
|
if(args.size < 2){
|
||||||
|
reject(player,"Usage: ::spellbook [int]. 0 = MODERN, 1 = ANCIENTS, 2 = LUNARS")
|
||||||
|
}
|
||||||
|
val spellBook = SpellBookManager.SpellBook.values()[args[1].toInt()]
|
||||||
|
player.spellBookManager.setSpellBook(spellBook)
|
||||||
|
player.spellBookManager.update(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue