diff --git a/build/etc/arena.json b/build/etc/arena.json index 9cfbb841..68f4fa7c 100644 --- a/build/etc/arena.json +++ b/build/etc/arena.json @@ -8,7 +8,7 @@ { "name":"Hydra", "level":34, "pc":"Dragon", "weapon":25, "armor":"Dragon Scale Mail", "money":"1000s", "spells": [ "Heal", "Teleport", "Blast" ] }, { "name":"Nycadaemon", "level":41, "pc":"Demon", "weapon":"Staff of Striking", "armor":18, "money":"10g", "spells": [ "Heal", "Teleport", "Blast" ] }, { "name":"Red Dragon", "level":44, "pc":"Dragon", "weapon":32, "armor":20, "money":"500g", "spells": [ "Heal", "Teleport", "Blast" ] }, - { "name":"Lich", "level":47, "pc":"Undead", "weapon":35, "armor":23, "money":"2500g", "spells": [ "Heal", "Teleport", "Blast" ] }, - { "name":"Beholder", "level":50, "pc":"Beast", "weapon":40, "armor":25, "money":"1p", "spells": [ "Heal", "Teleport", "Blast" ] }, - { "name":"Demogorgon", "level":99, "pc":"Beast", "weapon":"Staff of the Magi", "armor":25, "money":"1000p", "spells": [ "Heal", "Teleport", "Blast", "Confusion", "Transmute", "Cure", "Illusion", "Disintegrate", "Morph" ] } + { "name":"Lich", "level":47, "pc":"Undead", "adept":1, "weapon":35, "armor":23, "money":"2500g", "spells": [ "Heal", "Teleport", "Blast" ] }, + { "name":"Beholder", "level":50, "pc":"Beast", "adept":1, "weapon":40, "armor":25, "money":"1p", "spells": [ "Heal", "Teleport", "Blast" ] }, + { "name":"Demogorgon", "level":99, "pc":"Beast", "adept":2, "weapon":"Staff of the Magi", "armor":25, "money":"1000p", "spells": [ "Heal", "Teleport", "Blast", "Confusion", "Transmute", "Cure", "Illusion", "Disintegrate", "Morph" ] } ] diff --git a/package.json b/package.json index a74b2056..c45c4383 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dankdomain", - "version": "0.9.19", + "version": "0.9.20", "description": "Dank Domain: the return of Hack & Slash (1990-2014)", "main": "ttymain", "publisher": "theflyingape", diff --git a/src/battle.ts b/src/battle.ts index 2cb7fb47..8bbf1517 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -965,6 +965,7 @@ export function cast(rpc: active, cb:Function, nme?: active, magic?: number, DL? rpc.altered = true $.Magic.remove(rpc.user.spells, spell.cast) xvt.out($.who(rpc, 'His'), 'wand smokes as ', $.who(rpc, 'he'), $.what(rpc, 'cast'), 'the spell.\n') + $.saveUser(rpc) xvt.waste(300) } @@ -973,6 +974,7 @@ export function cast(rpc: active, cb:Function, nme?: active, magic?: number, DL? rpc.altered = true $.Magic.remove(rpc.user.spells, spell.cast) xvt.out($.who(rpc, 'His'), 'scroll burns as ', $.who(rpc, 'he'), $.what(rpc, 'cast'), 'the spell.\n') + $.saveUser(rpc) xvt.waste(300) } @@ -1312,7 +1314,7 @@ export function cast(rpc: active, cb:Function, nme?: active, magic?: number, DL? rpc.user.weapon = $.Weapon.merchant[n] $.Weapon.equip(rpc, rpc.user.weapon) xvt.out($.an(rpc.user.weapon.toString()), xvt.reset, '!\n') - rpc.altered = true + $.saveUser(rpc) } else { if (isNaN(+nme.user.weapon)) @@ -1328,7 +1330,7 @@ export function cast(rpc: active, cb:Function, nme?: active, magic?: number, DL? nme.user.weapon = $.Weapon.merchant[n] $.Weapon.equip(nme, nme.user.weapon) xvt.out($.an(nme.user.weapon.toString()), xvt.reset, '!\n') - nme.altered = true + $.saveUser(nme) } xvt.waste(500) break diff --git a/src/common.ts b/src/common.ts index a18cface..03b5920b 100644 --- a/src/common.ts +++ b/src/common.ts @@ -1826,7 +1826,6 @@ export function logoff() { reason = (xvt.reason ? xvt.reason : 'mystery') } if (xvt.validator.isNotEmpty(player.id)) { - sound('goodbye') player.lasttime = now().time if (access.roleplay) { saveUser(player) @@ -1845,6 +1844,7 @@ export function logoff() { wall(`logged off: ${reason}`) // logoff banner + sound('goodbye') xvt.out('\x06\n') xvt.out(xvt.reset, 'Goodbye, please play again! Also visit:\n') xvt.waste(750) diff --git a/src/globals.d.ts b/src/globals.d.ts index 2962843a..180a87f7 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -132,6 +132,7 @@ interface choices { interface monster { name: string pc: string + adept?: number hit?: string smash?: string poisons?: string[] diff --git a/src/tty/arena.ts b/src/tty/arena.ts index 65141355..4f8f51ff 100644 --- a/src/tty/arena.ts +++ b/src/tty/arena.ts @@ -317,6 +317,7 @@ function choice() { if (opponent.user.id[0] === '_') { if (($.online.cha = $.PC.ability($.player.cha, -10)) < 20) $.online.cha = 20 + $.online.altered = true $.player.coward = true } menu() @@ -490,6 +491,7 @@ function MonsterFights(): boolean { $.Magic.add(monster.user.spells, monsters[mon].spells[i]) $.activate(monster) + if (monsters[mon].adept) monster.adept = monsters[mon].adept monster.user.coin.amount = monsters[mon].money.toString() $.cat('arena/' + monster.user.handle.toLowerCase()) diff --git a/src/tty/dungeon.ts b/src/tty/dungeon.ts index b49d71c1..6b8c4f1d 100644 --- a/src/tty/dungeon.ts +++ b/src/tty/dungeon.ts @@ -684,7 +684,6 @@ function doMove(): boolean { return } if (i < start || i > end) { - $.player.coward = true xvt.app.refocus() return } @@ -896,7 +895,6 @@ function doMove(): boolean { switch (t % z) { case 0: if ($.player.cursed) { - $.player.coward = false $.player.cursed = '' $.online.str = $.PC.ability($.online.str, 10, $.player.maxstr) $.online.int = $.PC.ability($.online.int, 10, $.player.maxint) @@ -959,6 +957,7 @@ function doMove(): boolean { n.value += $.worth(new $.coins($.online.armor.value).value, $.online.cha) n.value *= (Z + 1) $.player.coin.value += new $.coins(n.carry(1, true)).value + $.sound('yahoo') break case 3: $.player.coin.value = 0 @@ -989,7 +988,6 @@ function doMove(): boolean { $.sound('shimmer', 12) break case 7: - $.sound('morph', 10) $.player.level = $.dice(Z) if ($.online.adept) $.player.level += $.dice($.player.level) @@ -999,6 +997,7 @@ function doMove(): boolean { $.player.gender = ['F','M'][$.dice(2) - 1] $.saveUser($.player) xvt.out(`You got morphed into a level ${$.player.level} ${$.player.pc} (${$.player.gender})!\n`) + $.sound('morph', 10) break case 8: $.sound('level') @@ -2029,7 +2028,7 @@ function putMonster(r = -1, c = -1): boolean { // check for overcrowding if (DL.rooms[r][c].monster.length) - if (DL.rooms[r][c].monster.length > 2 || DL.rooms[r][c].type == 1 || DL.rooms[r][c].type == 2) + if (DL.rooms[r][c].monster.length > 2) return false let i:number = DL.rooms[r][c].monster.length @@ -2137,7 +2136,7 @@ function putMonster(r = -1, c = -1): boolean { $.activate(m) m.user.immortal = deep - m.adept = $.int(deep / 4) + m.adept = $.dice(Z / 30 + deep / 4) - 1 m.str = $.PC.ability(m.str, m.adept * 2 + 1) m.int = $.PC.ability(m.int, m.adept * 2 + 1) m.dex = $.PC.ability(m.dex, m.adept * 2 + 1) diff --git a/src/tty/logon.ts b/src/tty/logon.ts index 05c6298d..24f7143e 100644 --- a/src/tty/logon.ts +++ b/src/tty/logon.ts @@ -127,11 +127,11 @@ function who() { else if (rs[row].id === $.player.id) { $.player.id = '' $.beep() - $.news(`?attempted player logon @ ${$.time($.now().time)}: ${rs[row].id} locked out from ${$.time(rs[row].locktime)}\n`, true) + $.news(`?attempted same player logon @ ${$.time($.now().time)}: ${rs[row].id} locked out from ${$.time(rs[row].locktime)}\n`, true) xvt.out(`\nYou\'re in violation of the space-time continuum: T - ${60 - t} minutes\n`) xvt.ondrop = $.logoff xvt.sessionAllowed = 1 - xvt.waste(1000) + xvt.waste(2000) } } diff --git a/src/tty/main.ts b/src/tty/main.ts index 533ec4cc..6d90f3be 100644 --- a/src/tty/main.ts +++ b/src/tty/main.ts @@ -330,8 +330,7 @@ function choice() { case 'X': if (!$.access.roleplay) break - $.music('.') - $.sound('oops') + $.music('ddd') $.action('yn') xvt.app.form = { 'yn': { cb: () => { diff --git a/src/tty/tavern.ts b/src/tty/tavern.ts index 709342ae..cd570927 100644 --- a/src/tty/tavern.ts +++ b/src/tty/tavern.ts @@ -266,8 +266,9 @@ function choice() { xvt.waste(2000) xvt.out('\n') - $.online.altered = true $.player.coward = true + $.saveUser($.online) + $.online.altered = true Battle.engage('Tavern', $.online, $.barkeep, require('./main').menu) return } @@ -298,7 +299,8 @@ function choice() { xvt.out('\nYou are allowed only to brawl other players.\n') if (opponent.user.id[0] === '_') { if (($.online.cha = $.PC.ability($.player.cha, -10)) < 20) - $.online.cha = 20 + $.online.cha = 20 + $.online.altered = true $.player.coward = true } menu()