Author Topic: Final Realms bundle released  (Read 9790 times)

Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1020
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Final Realms bundle released
« on: February 22, 2008, 10:40:29 PM »
Hey folks,

Final Realms 3.5 has gotten Fluffied, and as with the other libs
I've bundled with Wodan's FluffOS, it should now work fine on
both unix and Windows.

FR is definitely a fixer upper, and is...uh...eccentric in how it does things.
But it is loved and I hope folks benefit from it.

http://lpmuds.net/downloads.html#fr

-Crat

Offline quixadhal

  • BFF
  • ***
  • Posts: 642
    • View Profile
    • WileyMUD
Re: Final Realms bundle released
« Reply #1 on: February 23, 2008, 09:59:27 AM »
Cratylus **SMASHES** weekend free time with his Upload!!!

I just recently noticed that you fluff'd TMI and was going to go about comparing the changes from that one to see what kinds of things I'd need to thrash about for FR, but yer quicker than me. :)

Thanks much!

Offline quixadhal

  • BFF
  • ***
  • Posts: 642
    • View Profile
    • WileyMUD
Re: Final Realms bundle released
« Reply #2 on: February 23, 2008, 10:43:25 AM »
LOL, found my first buglet already... this one is due to hard-coded port numbers.

Code: (/secure/master.c) [Select]
/*
 * This function is called every time a player connects.
 * input_to() can't be called from here.
 */
object connect( int cPort )
  {
  object ob;
  if (!find_object("/secure/login")) {
      log_file("REBOOT", "Mud rebooted at "+ctime(time())+"["+time()+"]"+"\n");
  }
 
  printf("LPmud version: "+version()+".\n");
--->>>  if (cPort==4000)                                               <<<---
    ob = clone_object("/secure/login_new");
   else
    ob = clone_object("/secure/login");
  printf("\n");
  return ob;
} /* connet() */

It just so happens that I chose port 4000 instead of the default 4001 it ships with.  /secure/login_new.c does not exist, although there is a /secure/new_login.c, but I haven't looked yet to see how they differ beyond one being 2k larger than the other.

The symptom you get is simply having your connection closed immediately after the version banner is printed, which isn't surprising at all.

Ideally, if one wants a "new" or "testing" port, it should probably be specified in the mudos.cfg file and accessed by whatever means the driver supports.

Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1020
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Final Realms bundle released
« Reply #3 on: February 23, 2008, 11:15:23 AM »
Heh, thanks, I'll put it on my todo list.

I have to say I found FR very interesting. It was one of the most frustrating
libs to work on, but mostly because I had to wrap my head around new
ways of doing things, and learning new things is neat..

I don't know the history of the lib, but the sense I got is of a lib that
was detached from a real, running mud, so that rather than designing
things with a "lib release" in mind, the lib developed in the organic
"we need this so we're coding it" way of a regular mud, with all the
creativity (and baroque design) that entails.

There are various versions of 3.x floating around with
a few differences. Part of the problem I ran into, I think,
is that 3.5 was supposed to represent a "new way" of doing certain things,
which wound up not getting fully implemented. I believe that the older
versions also have some areas not included in 3.5. I didn't want to
get lost in the weeds of trying to merge anything, and just went with "the
highest number". I'll leave the project of merging the libs to individual
admins who feel a need for it. The unfluffed libs can be found here: http://lpmuds.net/files/fr/

-Crat

Offline quixadhal

  • BFF
  • ***
  • Posts: 642
    • View Profile
    • WileyMUD
Re: Final Realms bundle released
« Reply #4 on: February 23, 2008, 03:20:45 PM »
Yep.  I don't know too much more than you about the history of the game.  I do remember (at least I think this so) that the game was originally called Forgotten Realms, but they had to change their name for obvious reasons.

I last worked with this one back at version 2.1b3, so most of this is new to me as well.  I think the 3.5 version was meant to let them take a step back and try to migrate to the new v22 MudOS drivers, and do a bit of redesign in the process.  They never finished it, but I think this IS the best place to start since going further back leads you back to MudOS 0.9... and that's a dark scary place.

I remember this mudlib (at least the 2.1 version) being a prime candidate for the target of a conversion project we had years ago.  We ran an old DikuMUD, which had many bits cobbled into it from SillyMUD, Copper, and probably a few others.  We talked about converting to an Lp, and FR seemed to have the most D&D-like combat mechanics of them all.

Of course, that project never happened, although I do still have some of the conversion code I wrote, and a couple years ago I cleaned up and packaged our diku and posted it so it wouldn't get lost if a hard drive went splat.

In any case, I'll let everyone know if I find anything unusually interesting, broken, or both. :)

Offline daelaskai

  • BFF
  • ***
  • Posts: 174
    • View Profile
Re: Final Realms bundle released
« Reply #5 on: February 24, 2008, 08:00:49 AM »
Well, if you're working with this lib, I noticed (on Windows XP) that I get duplicates.  Typing "save" or room says prints twice.

Daelas

Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1020
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Final Realms bundle released
« Reply #6 on: February 24, 2008, 09:06:27 AM »
One of the frustrating things about this
lib is that it relies on features of the OS that Windows
does not provide. Specifically, it has queued command
stacking that relies on OS-provided itimer support that
is used to generate eval cost to determine success.

To make a long story short, to avoid constant error
messages in the Windows version, I had to make
unfortunate compromises...and I suspect that this
double message is probably related.

I do hope that if folks get involved with this fixer-upper,
they'll submit fixes (as quixadhal already has, thanks!)
that I can implement in future releases.

I hope you'll all forgive me for not perfecting all these
libs myself!

-Crat

Offline sojan

  • Acquaintance
  • *
  • Posts: 35
    • View Profile
Re: Final Realms bundle released
« Reply #7 on: February 24, 2008, 06:07:20 PM »
FR was a spinoff from DWlib was back in the very early nineties so it still has some underlying DWness about it's structure and baseobs.  It did go through some extensive rewrites of core code during the mid nineties in which a lot of stuff, like the combat code, was ripped out and replaced wholesale.  I wrote one of the combat systems they implemented and then later re-implemented with cleaner code - I think some of the unarmed crap may still be mine.

As I mentioned on intercre, I still have my full FR /w dir so if there is anything floating about in the lib that might make use of stuff in there let me know and I'll happily donate it.

J

Offline quixadhal

  • BFF
  • ***
  • Posts: 642
    • View Profile
    • WileyMUD
Re: Final Realms bundle released
« Reply #8 on: May 27, 2009, 11:18:44 AM »
**BRAAAAAINSSSSS** (necro post)

So, out of idle curiosity, and thinking I might dust off my diku2fr converter program again, I dragged this beastie out and decided to plug the newest FluffOS version into it.

One of the minor casualties of the British/American War of Independance appears to be that FluffOS defines terminal_colour() in package contrib, however /secure/simul_efun.c appears to want terminal_color().  Fortunately, everywhere else in the lib is happy enough with English, so one might want to change the offensive US version in simul_efun.c.

Offline hamlet

  • Acquaintance
  • *
  • Posts: 46
    • View Profile
Re: Final Realms bundle released
« Reply #9 on: May 28, 2009, 12:55:40 PM »
That's very VERY strange... I used to use terminal_colour() when I did mudlib work for FR, and it always had the u in it.  Sounds like they did some doctoring just for the distlib.

Offline ballbreaker

  • Acquaintance
  • *
  • Posts: 9
    • View Profile
Re: Final Realms bundle released
« Reply #10 on: July 25, 2009, 10:52:15 AM »
Hepp, nice that FR got fluffied :)
I was wondering what the "fluff" actions consists of. I have some libs from a Spanish mud that was based on FR and I'd like to make them work with FluffOS. I tried to put those libs instead of the FR mudlib but it didnt work (would have been too good ^_^).  So.. what would I have to do  to make it compatible with FluffOS? Maybe using some files from the FR fluffed version would do?

Anyway, installed the fluffed FR libs and works great. I just detected something weird. Doing the same action sometimes I get an error and sometimes not.
I can type "finger god" several times and 1/3 I get an error.

The /cmds/player/finger.c calls the /secure/finger.c where I get the error.
I tweaked the /secure/finger.c around the line 200 where I got the error and put it like this:
Code: [Select]
 
    my_name = this_player()->query_name();
    write("*************************"+my_name+"\n");

    my_name = this_player(1)->query_name();
    write("*************************"+my_name+"\n");

    my_name = this_player(1)->query_name();
    write("*************************"+my_name+"\n");
  
    if ("/secure/master"->query_lord(this_player(1)->query_name()) &&
  ident)
        retval += ident + "@";
So basically I just added a "my_name" string where I stored the name of this_player() :). The last bit with the /secure/master/ was where I was getting the error, and left it untouched.

Then, as I was typing "finger god" I was getting something like this:
Quote
> fg me
*************************god
*************************god
*************************god
Login name : god                   Real name : ???                    
Home directory : /w/god            
Is the Master of the Heaven domain.
Is the Master of the Mudlib domain.
Is the Master of the Newbie domain.
A member of the heaven, mudlib, newbie domains.
First logged on Wed Nov  8 19:11:32 1995.
23 hours, 44 minutes and 45 seconds old.
On since Sat Jul 25 17:00:04 2009
Idle for 0 minutes and 0 seconds.
127.0.0.1 (127.0.0.1)
Last position: /w/god/workroom
No mail.
No plan.
> fg me
*************************god
*************************god
*************************god
Login name : god                   Real name : ???                    
Home directory : /w/god            
Is the Master of the Heaven domain.
Is the Master of the Mudlib domain.
Is the Master of the Newbie domain.
A member of the heaven, mudlib, newbie domains.
First logged on Wed Nov  8 19:11:32 1995.
23 hours, 44 minutes and 45 seconds old.
On since Sat Jul 25 17:00:04 2009
Idle for 0 minutes and 0 seconds.
127.0.0.1 (127.0.0.1)
Last position: /w/god/workroom
No mail.
No plan.
> fg me
*************************god
*************************god
*************************god
Login name : god                   Real name : ???                    
Home directory : /w/god            
Is the Master of the Heaven domain.
Is the Master of the Mudlib domain.
Is the Master of the Newbie domain.
A member of the heaven, mudlib, newbie domains.
First logged on Wed Nov  8 19:11:32 1995.
23 hours, 44 minutes and 45 seconds old.
On since Sat Jul 25 17:00:04 2009
Idle for 0 minutes and 0 seconds.
127.0.0.1 (127.0.0.1)
Last position: /w/god/workroom
No mail.
No plan.
> fg me
> *************************god
Bad argument 1 to call_other()
Expected: string or array or object Got: 0.
program: /secure/finger.c, object: /secure/finger, file: /secure/finger.c:209
FluffOS driver tells you: You have no heart beat!
restart
Attempting to restart heartbeat..


So ... when I finger myself, sometimes I get the error sometimes not. If you pay attention at the code the first "this_player()" has no argument while the other  have "this_player(1)". I think the "1" was there in order to make sure the  this_player() function was targeting the person who originally started the action, but I'm not sure.

So probably, under whatever circumstances the "this_player(1)" function returns a "0" and makes your command crash.

Any idea on how to fix this?