mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-10 10:20:41 -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
|
||||
- Random Events can no longer spawn in the wilderness.
|
||||
- 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() {
|
||||
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());
|
||||
}
|
||||
}
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -73,6 +73,5 @@ public final class AncientMaceSpecialHandler extends MeleeSwingHandler implement
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,5 @@ public final class BackstabSpecialHandler extends MeleeSwingHandler implements P
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ public final class ChainhitSpecialHandler extends RangeSwingHandler implements P
|
|||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
int speed = (int) (32 + (entity.getLocation().getDistance(victim.getLocation()) * 5));
|
||||
Projectile.create(entity, victim, 258, 40, 36, 32, speed, 5, 11).send();
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -66,6 +66,5 @@ public final class CleaveSpecialHandler extends MeleeSwingHandler implements Plu
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,5 @@ public final class ClobberSpecialHandler extends MeleeSwingHandler implements Pl
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,5 @@ public final class DescentOfDarknessSpecialHandler extends RangeSwingHandler imp
|
|||
@Override
|
||||
public void visualizeImpact(Entity entity, Entity victim, BattleState state) {
|
||||
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) {
|
||||
entity.animate(ANIMATION);
|
||||
victim.graphics(GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,5 @@ public final class FeintSpecialHandler extends MeleeSwingHandler implements Plug
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.animate(ANIMATION);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,6 @@ public final class HealingBladeSpecialHandler extends MeleeSwingHandler implemen
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,5 @@ public final class IceCleaveSpecialHandler extends MeleeSwingHandler implements
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,5 @@ public final class ImpaleSpecialHandler extends MeleeSwingHandler implements Plu
|
|||
return;
|
||||
}
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,5 @@ public final class JudgementSpecialHandler extends MeleeSwingHandler implements
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
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);
|
||||
int speed = (int) (46 + (entity.getLocation().getDistance(victim.getLocation()) * 5));
|
||||
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
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -81,6 +81,5 @@ public final class PunctureSpecialHandler extends MeleeSwingHandler implements P
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,6 @@ public final class SaradominsLightningHandler extends MeleeSwingHandler implemen
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -79,6 +79,5 @@ public final class SeverSpecialHandler extends MeleeSwingHandler implements Plug
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,5 @@ public final class ShatterSpecialHandler extends MeleeSwingHandler implements Pl
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,6 +102,5 @@ public final class SliceAndDiceSpecialHandler extends MeleeSwingHandler implemen
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,5 @@ public final class SmashSpecialHandler extends MeleeSwingHandler implements Plug
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
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();
|
||||
speed = (int) (32 + (entity.getLocation().getDistance(victim.getLocation()) * 10));
|
||||
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) {
|
||||
entity.animate(ANIMATION);
|
||||
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
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -157,7 +157,6 @@ public final class SweepSpecialHandler extends MeleeSwingHandler implements Plug
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,6 +85,5 @@ public final class WarstrikeSpecialHandler extends MeleeSwingHandler implements
|
|||
@Override
|
||||
public void visualize(Entity entity, Entity victim, BattleState state) {
|
||||
entity.visualize(ANIMATION, GRAPHIC);
|
||||
addExperience(entity, victim, state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -310,6 +310,7 @@ public abstract class MagicSpell implements Plugin<SpellType> {
|
|||
* @param hit The hit.
|
||||
*/
|
||||
public void addExperience(Entity entity, int hit) {
|
||||
entity.getSkills().addExperience(Skills.MAGIC, experience, true);
|
||||
if (!(entity instanceof Player) || hit < 1) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -417,6 +417,7 @@ class CombatPulse(
|
|||
entity.faceTemporary(victim, 1) // face back to entity.
|
||||
}
|
||||
handler.adjustBattleState(entity, victim!!, state)
|
||||
handler.addExperience(entity, victim, state)
|
||||
handler.visualize(entity, victim, state)
|
||||
if (delay - 1 < 1) {
|
||||
handler.visualizeImpact(entity, victim, state)
|
||||
|
|
|
|||
|
|
@ -407,7 +407,55 @@ abstract class CombatSwingHandler(var type: CombatStyle?) {
|
|||
* @param victim The victim.
|
||||
* @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.
|
||||
|
|
|
|||
|
|
@ -111,14 +111,10 @@ open class MagicSwingHandler
|
|||
|
||||
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
||||
state!!.spell.visualize(entity, victim)
|
||||
addExperience(entity, victim, state)
|
||||
}
|
||||
|
||||
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||
if (state!!.spell != null && entity is Player) {
|
||||
entity.getSkills().addExperience(Skills.MAGIC, state.spell.experience)
|
||||
}
|
||||
if (state.targets == null) {
|
||||
if (state!!.targets == null) {
|
||||
if (state.estimatedHit > -1) {
|
||||
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?) {
|
||||
if (entity is Player) {
|
||||
if (victim is Player && entity.asPlayer().ironmanManager.isIronman) {
|
||||
return
|
||||
}
|
||||
var hit = 0
|
||||
if (state!!.targets != null) {
|
||||
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)
|
||||
}
|
||||
if (state?.spell != null && entity is Player) {
|
||||
state.spell.addExperience(entity, state.totalDamage)
|
||||
return
|
||||
}
|
||||
|
||||
super.addExperience(entity, victim, state)
|
||||
}
|
||||
|
||||
|
||||
override fun getArmourSet(e: Entity?): ArmourSet? {
|
||||
return if (ArmourSet.AHRIM.isUsing(e)) {
|
||||
ArmourSet.AHRIM
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@ open class MeleeSwingHandler
|
|||
|
||||
override fun visualize(entity: Entity, victim: Entity?, state: BattleState?) {
|
||||
entity.animate(entity.properties.attackAnimation)
|
||||
addExperience(entity, victim, state)
|
||||
}
|
||||
|
||||
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||
|
|
@ -232,50 +231,6 @@ open class MeleeSwingHandler
|
|||
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? {
|
||||
if (ArmourSet.DHAROK.isUsing(e)) {
|
||||
return ArmourSet.DHAROK
|
||||
|
|
|
|||
|
|
@ -120,7 +120,9 @@ open class MultiSwingHandler(meleeDistance: Boolean, vararg attacks: SwitchAttac
|
|||
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?) {
|
||||
if (current.isUseHandler) {
|
||||
current.handler.visualizeImpact(entity, victim, state)
|
||||
|
|
|
|||
|
|
@ -136,63 +136,6 @@ open class RangeSwingHandler
|
|||
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?) {
|
||||
var start: Graphics? = null
|
||||
if (state!!.ammunition != null) {
|
||||
|
|
@ -221,7 +164,6 @@ open class RangeSwingHandler
|
|||
}
|
||||
}
|
||||
entity.visualize(entity.properties.attackAnimation, start)
|
||||
addExperience(entity, victim, state)
|
||||
}
|
||||
|
||||
override fun impact(entity: Entity?, victim: Entity?, state: BattleState?) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package rs09.game.system.command.sets
|
||||
|
||||
import core.game.node.entity.player.link.SpellBookManager
|
||||
import core.game.node.item.Item
|
||||
import core.plugin.Initializable
|
||||
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