# feathxr's notes
## Skills to implement
-*Feedback and ideas welcome, especially aesthetic touches.*
-----
-*The plan is to implement and overhaul skills somewhat gradually so that we have a chance to test changes as we go. Anything below is up for discussion and/or subject to change.*
----
### Minstrel Songs
- need name ideas (aria, dirge, ballad, chant, hymn, melody, lullaby, song, tune)
- (Song of Battle)
- 10s duration, 10s cooldown
- 50 energy
- all allies in the room with the minstrel (including the minstrel) get an additional basic attack per round.
- Only one song can be active at a time. (this could be adjusted with something like skill tree/level)
- (Song of Restoration)
- 10s duration, 10s cooldown
- 50 energy
- all allies in the room with the minstrel (including the minstrel) recover 1% energy/mana/hp per round.
- Only one song can be active at a time. (this could be adjusted with something like skill tree/level)
- (Song of Resistance)
- 10s duration, 10s cooldown
- 80 energy
- all allies in the room with the minstrel (including the minstrel) take 20% less damage.
- Only one song can be active at a time. (this could be adjusted with something like skill tree/level)
- (Song of Freedom)
- 10s duration, 10s cooldown
- 80 energy
- all allies in the room with the minstrel (including the minstrel) are immune to disabling effects (mute, stun, shock, root, etc)
- Only one song can be active at a time. (this could be adjusted with something like skill tree/level)
----
### Additional Skill Ideas
- (Fear)
- Force target to flee for 6 seconds.
- 60 mana
- 20s cooldown
- (Blink)
- Teleport's caster 1 room away instantly.
- Directional input like Quick Shot.
- Can pass through locked doors.
- 75 mana
- 30s cooldown
- (Fireshield)
- Shields the caster for 20s
- Caster takes 25% reduced damage for the duration.
- Attackers take 100% magic fire damage with each attack on the target.
- 80 mana
- 60s cooldown
- (Summon Companion)
- Summons a beast ally to fight by your side.
- Companion attacks your target (switches targets with you).
- (issues with fleeing? Could companion also flee?)
- 100 energy
- 2 min cooldown
- Lasts until killed.
- Companion has 50% of caster's hp/stats.
- (Raise Dead)
- Castable only if a corpse is present in the room.
- Does not require targeting of the corpse.
- Destroys the corpse upon cast completion.
- Dead ally attacks caster's targets, switches targets with caster.
- Lasts until killed.
- Zombie has 60% of corpse's hp/stats
- 2 min cooldown
- 100 mana
----
### Additional Balance changes
- Shadow hammer mana cost reduce to 75.
- Biofeedback increase damage reduction to 20% and give .5s warmup.
- Refresh mana cost reduce to 75.
- Mana Shield - make total damage absorbed = maximum mana, change damage reduction to 75%, increase duration to 10s, increase cooldown to 30s
----
List of skills to implement:
- [ ] Corrosion;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Decrepify;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE Effect;
- [x] Assigned to classes;
- [ ] Tested;
- [x] Immolate;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [x] Tested;
- [ ] Hamstring;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [x] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Throat Punch;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Claw;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Cone of Cold;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Ice Shards;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Imbue;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect?;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Locust Swarm;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [x] Assigned to classes;
- [ ] Tested;
- [ ] Plague (spreadable effect);
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
- [x] Resurrection;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [x] Tested;
- [ ] Field Dress;
- [x] Implemented;
- [x] Messages;
- [x] Icon;
- [ ] FE effect;
- [x] Assigned to classes;
- [ ] Tested;
Mechanics to do:
- [ ] NPC summon (requires a list of NPC definitions and `minion` AI);
----
- Corrosion (Invoker, Hexxer, Warlock, Sorcerer, Witch, Lich) (choose 2-3)
- Skill description: Erode your enemy's protections to increase your damage.
- Damage (180, magic/acid) + debuff (-50% armor for 10-15s)(duration or -armor % can scale with level)
- 60 mana
- If duration scales with level, make cooldown whatever the max scaling is, ie if duration is 10-15s, make cooldown 15s.
- If -armor% scales with level, have it cap at 50%
- *how would -50% armor work on a character with no +armor?*
Dev:
- [x] Added `corrosion` spell which currently attributes set fixed: `cooldown`: 15 sec, `duration`: 15 sec, `coefficient`: 0.5.
- [x] Added `vulnerable` effect which increase physical damage taken by a target by the specified percentage. `Armor` reduction works not as intended, it only modifies `armor` when effect is applied. If the target receive `armor` buff after, `vulenerable` won't have any effect...
- [x] Replaced `Warlock's` `decay` with `corrosion` for testing (as another utility spell). To be changed?;
```javascript!
export const corrosion: Readonly<Skill> = {
id: "corrosion",
name: "Corrosion",
type: "SPELL",
flags: ["DEBUFF"],
requiresTarget: true,
offensive: true,
initiatesCombat: true,
effect: {
id: "vulnerable",
coefficient: 0.5,
duration: 15 * 1000,
},
resource: {
attribute: "mana",
cost: 60,
},
options: {
noun: `<c="lime">corrosion</c>`,
verb: `<c="lime">corrode</c>`,
verbPlural: `<c="lime">corrodes</c>`,
element: "acid",
attribute: "wisdom",
skillMultiplier: 180,
// TODO: make icon
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>Corrosion</title><circle fill="#fff" cx="50" cy="50" r="50" /></svg>`,
},
cooldown: 15,
info: () =>
`Erode your enemy's protections by ${
((corrosion.effect as EffectObject)?.coefficient || 1) * 100
}% to increase your <c="grey">physical</c> damage.`,
};
```
_____
- Decrepify (Invoker, Hexxer, Warlock, Shaman, Sorceror, Witch, Lich, Necromancer, Soulrender) (choose 2-4)
- skill description: Magically age your target, reducing their effectiveness.
- -25% Str, Agi, Int, Wis, Con for 8 seconds
- instant cast
- 12s cooldown
- 60 mana
Dev:
- [x] Added effect `weaken` which reduce 5 attributes (`Stamina` is not touched) by a provided coefficient;
- [x] Changed `warlock's` `entagle` with `decrepify` for testing?;

```javascript!
export const decrepify: Readonly<Skill> = {
id: "decrepify",
name: "Decrepify",
type: "SPELL",
flags: ["OFFENSIVE", "DEBUFF"],
requiresTarget: true,
offensive: true,
initiatesCombat: false,
effect: {
id: "weaken",
coefficient: 0.25,
duration: 8 * 1000,
},
resource: {
attribute: "mana",
cost: 60,
},
options: {
noun: `<c="violet">decrepify</c>`,
nounPlural: `<c="violet">decrepify spell</c>`,
// TODO: make icon
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>Decrepify</title><circle fill="#fff" cx="50" cy="50" r="50" /></svg>`,
},
cooldown: 12,
info: () => `Magically age your target, reducing their effectiveness.`,
};
```
-----
- Immolate (Bomber, Conjurer, Invoker, Lich, Nameless, Seer, Sorcerer, Soulrender, Summoner, Warlock) (choose 2-4)
- Damage (150 DD + 150 DoT, magic/fire)
- warmup (same cast time as Decay)
- 12s cooldown
- 60 mana
- skill description: Burn your enemies in a pillar of fire!
Dev:


> Don't mind cleric, it's just testing.
The effect is called `burn`. This is how it is setup in skill description:
```javascript!
const immolate: Readonly<Skill> = {
...
effect: {
id: "burn",
tickInterval: 3,
duration: 15 * 1000,
totalDamage: 150,
expireFirstPerson: "You are no longer <red>burning</red>",
pulseFirstPerson: "Flames of <red>immolate</red> burns you",
maxStacks: 3,
},
...
}
```
---
- Hamstring (Assassin, Marauder, Nomad, Ranger, Swashbuckler, Weaponmaster)(choose 2-3)
- Damage (160, physical/slash)
- Reduces movement speed by 35% for 6s
- 10s cooldown
- 50 energy
Dev:
```javascript!
// Speed reduction mechanics:
// normal move speed means that normal MOVEMENT_LAG is used.
move_speed = 1 / MOVEMENT_LAG; // tiles/second
// modified move speed:
move_speed * (1 - x) = (1 - x) / MOVEMENT_LAG; // where x is a percents
// of movement speed reduction
// There, new lag can be found as:
1 / INCREASED_LAG = (1 - x) / MOVEMENT_LAG;
INCREASED_LAG = MOVEMENT_LAG / ( 1 - x );
// For 35% reduction:
1 / (1 - .35) = 1.538461538
// For 40% reduction (chill):
1 / (1 - .4) = 1.666666667
```
- [x] Changed `assasin's` `headbutt` to `hamstring`;

---
- Throat Punch (Ape, Assassin, Fury, Monk, Nomad, Swashbuckler, Templar, Warrior)(choose 2-3)
- Damage (120, physical/blunt)
- prevents target from casting spells for 7 seconds
- 15s cooldown
- 45 energy
- skill description: A devastating blow to the throat, temporarily silencing the target.
Dev:
- [x] Replaced `assassin's` `hack` with `throat-punch`;

---
- Claw (Beastmaster, Changeling, Dragonknight, Sniksnakr)
- Damage (180 + 120 DOT, physical/slash)
- Adds bleed for 6 seconds
- 10s cooldown
- 40 energy
- skill description: Rend your enemy's flesh, causing them to bleed.
Dev:
- [x] Added `bleed` effect dealing `physical` damage over time;
- [x] Replaced `beastmaster's` `kick` with `claw` for testing;

---
- Cone of Cold (Conjurer, Doomsayer, Druid, Lich, Nameless, Sorcerer, Tempest, Warlock, Witch)(choose 2-4)
- Damage (180, magic/ice)
- AoE (hits up to three people in the room but only hits each person once)
- Reduces movement speed to .3s/tile for 7s
- 10s cooldown
- instant cast
- 55 mana
- skill description: A blast of icy wind buffets your enemies, chilling them to the bone.
Dev:
- [x] Added `chill` effect that reduce movement and casting speed by `40%` fixed;
- [ ] The infliction message; "You are chilled to the bone!"
- [ ] The expiration message; "Your body warms up again."
- [x] Replaced `Lich'es` `inferno` with `cone of cold`;
- [x] Replaced `sorcerer's` `shadow hammer` with `cone of cold`;

---
- Ice Shards (Conjurer, Doomsayer, druid, Lich, Nameless, Sorcerer, Tempest, Warlock, Witch)(choose some)
- Damage 200 (magic/ice)
- Scales with level like Fireball
- 8s cooldown
- same warmup as Fireball
- 55 mana
- skill description: Skewer your enemies with piercing shards of ice!
Dev:
- [x] Added as a 6'th skill to `sorcerer`;

---
- Imbue (Enchanter, Storyteller, Nameless)
- Buff, "Imbues your target with magical energy, increasing their damage"
- increases target's base damage by 33%
- 20s duration
- 60s cooldown
Dev:
- [x] Added `imbued` effect which increase outgoing damage;
- [ ] The infliction message; "You are imbued with great power!"
- [ ] The expiration message; "Your imbued power fades."
- [x] Replaced `enchanter's` `inferno` with `imbue`;
---
- Locust Swarm (Ancient One, Conjurer, Doomsayer, Druid, Hexxer, Illusionist, Invoker, Warlock, Witch)(choose 2-4)
- Damage (145 per tick, magic/nature)
- Deals AOE damage to each enemy in the room
- ticks 5 times (once per round)
- 120 mana
- 2.5s cast
- 30s cooldown
- skill description: Summon a swarm of locusts to ravage your enemies.
Dev:
- [x] Added `locust-swarm` room behavior, that does damage on ticks with ticks being picked up based on `pulseDelay`;
- [ ] The infliction message;
- [ ] The expiration message;
- [ ] Tick message (damage);
- [x] Added `Locust Swarm` as a 6th skill for `druid`;

---
- Plague (Ancient One, Doomsayer, Hexxer, Lich, Soulrender, Warlock, Witch)(choose 2-4)
- DoT 30+(.5(wis)*(1+(lvl/2))) per tick, magic/shadow
- ticks 4 times
- has 33% chance to spread to another enemy target each tick
- 2s cast
- 80 mana
- 15s cooldown
- skill description: Ravage your enemies with a spreading plague.
Dev:
- [x] Added `infection` effect that deals DOT and spread;
- [ ] The infliction message; "You have been infected with the Plague."
- [ ] The expiration message; "The Plague has run its course."
- [ ] Tick message (damage); "Plague is ravaging your body."
- [x] Replaced `hexxer's` `firebolt` with `plague`;

---
- Resurrection ()
- brings target ally back to life with 10% hp
- 5s cast
- 150 mana
- 2 min cooldown


```javascript!
export const resurrection: Readonly<Skill> = {
id: "resurrection",
name: "Resurection",
type: "SPELL",
flags: ["WARMUP"],
requiresTarget: true,
canTargetCorpse: true,
targetSelf: false,
offensive: false,
initiatesCombat: false,
requiresOutOfCombat: true,
resource: {
attribute: "mana",
cost: 150,
},
options: {
noun: `<c="cornflowerblue">resurrection</c>`,
verb: `<c="cornflowerblue">resurrect</c>`,
verbPlural: `<c="cornflowerblue">resurrects</c>`,
percentage: 0.1,
// TODO: replace icon with something appropriate.
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>Resurrection</title><circle fill="#fff" cx="50" cy="50" r="50" /></svg>`,
},
cooldown: 120,
warmup: {
duration: 5,
messageBundle: "cast",
interruptedBy: interrupts["MOVE"],
interruptionLag: 1500,
},
info: () => `brings target ally back to life with ${(resurrection.options.percentage || 1) * 100}% hp`,
};
```
`Resurrection` is added as a 6th skill to `Cleric` class temporary for testing.
---
- Field Dress
- HoT - skill
- 45 energy
- 45s cooldown
- Heals 5% of target's max health each tick, for 6 ticks
- Useable on self or ally
- skill description: Stop the bleeding with a healing salve and bandage.
Dev:
- [x] Added `regeneration` effect which restore a % of target's health;
- [x] Replaced `huntmaster's` `potion` with `field dress`;

## Others
- scry/wards
- barrier/magic armor
- fire shield
- blind/gouge/dirt kick = reduced visibility
- disarm
- change entangle to only root, not disable
- add a "paralyze" ability
- add "shield bash" for templar/others
- add warmup to cone of cold
- caster challenge (nerf but meaningful nerf)
- passive skills
- resistances
- magic resist shields/resists
- more buffs/debuffs
- dispel
- anti-magic shield
- armor of faith
-
**Commands
- examine/look - person to see their gear/condition
- examine - gear to see its stats
- show gear stats on pickup/equip
- rest command - increases out of combat regen of health/mana/energy
- socials like /wave, /smile, /hug, etc.
- make sure armor isn't affecting magic damage
## Skill Balance
-*These are ready to deploy*
- Implement damage types
- make magic damage not reduced by the target's armor
- (what if base magic resists were based on wisdom/constitution?)
---
- change Refresh
- This ability is rarely used, especially with items, because energy regens faster than mana. There are rare occasions when someone can run out of energy, but it's typically only when soloing, or at level 1.
- Some options could include a buff that reduces energy spent to use abilities for the duration, or a buff that heals the recipient by ~50% of energy used (amount healed will be minor (8 - 50) but will add up over time for some sustain)
---
- Energize
- change to only castable on others, or 50% reduced effectiveness when cast on self
---
---
---
---
### Gameplay/UI updates
- Enable killing a mob to be able to grant a buff as a reward rather than dropping an item.
- when you have items for each slot, new item drops aren't so useful.
- ~~Visual buff indicators with timers.~~
- ~~Color-coding for ally/enemy/neutral text~~
- ~~Swap Level and Health/Mana/Energy/XP bars on the UI~~
- Show item stats on pickup and give.
- enable 'examine' to show an item's stats
- Enable 'consider npc' command to give players the ability to gauge how hard a fight will be prior to engaging.
- Enable group chat
- Enable '/' to activate text box while in arcade mode
- /gc while in text mode will put whatever you type after into group chat
- update map icons to include a greater distinction between allies/enemies/npcs/bosses
- @=you, a=ally, f=friendly/neutral npc, e=enemy, B=boss
## Maps
Bufficorn Brawl
-Capture the flag style game
-g = level 3 golem, doesn't respawn
-G = level 9 golem, respawns every 2 mins
-Turn in 2 flags at a time? 2 flags = 1 point
-First team to 3 points wins
-If you die while holding a flag, the flag drops and can be looted by the enemy team.
|------------------|
| |h 2|
|----- --- --- --- |
|h| g g g g| |
| | - - - -| |
| |
| | | |
| |G| | | |G| |
| | | | | |
| |ee| |
| | | | | |
| |G| | | |G| |
| | | |
| |
| | | |
| |- - - - | |
| |g g g g |h|
| --- --- --- -----|
|1 h| |
|------------------|
### Tunnels
