If I could have one staff power...

Started by Asmoth, January 22, 2016, 03:55:25 PM

Quote from: Armaddict on January 25, 2016, 01:02:44 PM
Quote from: nessalin on January 25, 2016, 10:01:58 AM
Quote from: JackGibbons on January 25, 2016, 12:50:12 AMOr they got really ambitions and integrated a JS interpreter into the C/C++ engine. But I'd be surprised.

Since the late 90s, actually.

Purely out of curiosity as an up-and-coming programmer...what prompted the change over from C to JS?  Was it due to code knowledge, or was there a specific utilitarian reason?

The change was not so much from C to JS as it was a project Tenebrius was interested in giving a spin, and it caught on.  What made it succeed probably had a lot to do with the ability to google "javascript tutorial" and apply that knowledge to what was being done on Armageddon.  The previous attempt at in-game scripting languages didn't have a lot of documentation and the people who created them didn't have much desire (understandably) to create any.

The only technical requirement were that changes be usable without rebooting the game, otherwise the gain would have been minimal.
"Unless you have a suitcase and a ticket and a passport,
The cargo that they're carrying is you"

Quote from: nessalin on January 25, 2016, 07:29:52 PM
To be clear, the game engine is in C.

In the late 90s Tenebrius put hooks into the C code to allow javascripts to run.  This involved giving javascript knowledge of game structures (characters, rooms, objects) and their properties, as well as creating functions in javascript that could pass instructions off to the game (move this object here, send this message to that character, load this object up, decrease this character's hit points by 20, etc...).

At the time we had had two home-brew programming languages, already.  DMPL (Dan's Mud Programming Language) which, to the author's credit, still runs parts of the game.  The other was HASL, Hal's Armageddon Scripting Language, which didn't hit critical mass, but was used briefly.

Later Xygax joined staff and made improvements to the JS implementation.  Better error handling, memory management, and giving feedback to people on their scripts which improved their quality and the ability of the people contributing.

For the most part if you can program in javascript, you can write code for (preferably smallish) things on Armageddon.  We try to limit it from getting out of hand.  Generally if a javascript is getting a lot of action (say, getting attached to every NPC in the game), we'll move that over to the C code for reasons like speed and so every NPC created doesn't need the script attached.  In this area javascript is great for working out the logic, details, gotchas without requiring reboot after reboot.

The other reason we try to limit it's use for things that are 'too large' is that control of how the game operates can quickly escape the grasp of the majority of staff.  A script could, easily, simulate a bank, or two banks, or 15 banks.  At which point you end up with 15 banks, each having their own command syntax, methods of storing your balance, with all of them pissing in each other's jello. A script could be written to simulate a new guild, without there actually being a new guild, controlling skills and branching - but working at odds with the game code, which would be trying to adjust skills in a different way.

While Javascript does run a large portion of the game, it is not the game's core engine, which is what handles combat, magick (although plenty of spells rely on javascripts that make the objects, rooms, and characters affected by the spell do this or that), shops, movement and other things that are universal behavior.  In places where these act differently (such as a door that seems different from all other doors in the game), chances are a javascript is running it.

Agree with LauraMars. Very interesting. Javascript was hot shit back then, too, so I can see why they'd pick it. Today we might have tried Python or Lua. Obviously JS is still alive and kicking today.
> who
Immortals
---------

There are 0 visible Immortals currently in the world.

There are 0 players currently in the world, other than yourself.

"Only the Lonely" - Roy Orbison

turn you all into cabbage.

the only staff power that matters.
Quote from: Adhira on January 01, 2014, 07:15:46 PM
I could give a shit about wholesome.

I'd like to be able to jump into any NPC, critter or humanoid, and animate them for as long as I want, whilst adjusting stats/skills, as needed - then jump to other NPC's when I feel like it.

That one guy who solo emotes with the NPC guard in front of the Byn compound? Yeah - I'd give him a show.

That solo hunter twinking the Hell out and spam-farming Chaltons? Yeah, one of those chaltons are getting a stat buff and a bash skill boost.

Animate random merchants and have them obnoxiously advertise their goods.
Quote from: LauraMars
Quote from: brytta.leofaLaura, did weird tribal men follow you around at age 15?
If by weird tribal men you mean Christians then yes.

Quote from: Malifaxis
She was teabagging me.

My own mother.

Id change up the code on  vennant, and have him specifically ignore any orders made from the actual bar from elves/breeds/gemmed.
You want a drink? Learn ya place first.
The Ooze is strong with this one

Quote from: 8bitgrandpa on June 28, 2016, 12:01:20 AM
You are our official hammer, Ooze.

Malachi 2:3

Quote from: WanderingOoze on February 10, 2016, 04:56:04 AM
Id change up the code on  vennant, and have him specifically ignore any orders made from the actual bar from elves/breeds/gemmed.
You want a drink? Learn ya place first.

Easily overcome:

s
>You're in teh gaj, standing.
open pack;get coins pack;buy #1
Bartender gives you a bottle.
put coins pack;close pack
sit bar
You take a seat at the bar after getting your drink.

I'd change the code handling of sitting at bars. So - you'd see:

>Teh gaj [n e s]
A room with a bar and tables and NPCs.
Also here:
A bright-eyed gemmer is at the rune-carved end of the bar.
An elven gemmer is at the rune-carved end of the bar.
A rinthi gemmer is at the rune-carved end of the bar.
A pig-tailed breed is at the filthiest end of the bar.
A rinthi elf is at the filthiest end of the bar.
A generic Bynner is at the bar.
A generic hunter is at the bar.
A Kadian low-ranking hunter is at the bar.

sit bar

You, being a rinthi elven gemmer, attempt to sit at the bar. There's no room for you on the rune-carved end of the bar. You're not invited to sit anywhere else at the bar.

sit ledge
listen on
Talia said: Notice to all: Do not mess with Lizzie's GDB. She will cut you.
Delirium said: Notice to all: do not mess with Lizzie's soap. She will cut you.

Staff had Vennant order the murder of some human chick after she spent a good number of RL days pestering all the undesirables so much that they kept leaving the Gaj.

She tried to bribe him. But he said it couldn't cure the amount of money he lost in sales because of her.

Quote from: The Silence of the Erdlus on February 10, 2016, 11:03:57 AM
Staff had Vennant order the murder of some human chick after she spent a good number of RL days pestering all the undesirables so much that they kept leaving the Gaj.

She tried to bribe him. But he said it couldn't cure the amount of money he lost in sales because of her.
It makes sense.

There is, unfortunately, no staff power to automatically disable your clan monitor once you alt-tab back to your mud client and see a tidal wave of really out-there mudsex.

Quote from: Mordiggian on February 11, 2016, 05:29:40 PM
There is, unfortunately, no staff power to automatically disable your clan monitor once you alt-tab back to your mud client and see a tidal wave of really out-there mudsex.
You know that email I have connected to my account.
Yeah.
Send me that shit.
I wanna read /all of it/