Talk:Slash'EM Extended

From NetHackWiki
Revision as of 09:12, 13 June 2014 by 79.225.101.242 (talk) (Bug Report)
Jump to navigation Jump to search

Is there going to be a windows binary release that supports graphical tiles?

Only if someone makes tiles, since I don't use them, and I also suck at making new ones for all the new monsters. New versions often add new monsters/items/other things too, so they would all need new tiles as well... anyway, if someone wants to take their time making tiles, they may be included in a future release, but I certainly can't make them myself. --Bluescreenofdeath (talk) 05:58, 12 May 2014 (UTC)
Dear Amy, I'm impressed of your efforts and energy and sadistic humor you put in this fork, really appreciate it. It's whole new era of Slash'em since 2006! I will definitely continue playing S'EX (and maybe sometimes ascend)))). Usually I play roguelikes in ascii although tiles are nice to have. How much new tiles do you need? Maybe I could do some pixelart. But probably making tiles would be more productive after several major versions when most of new content would be added. --Transcendreamer (talk) 10:02, 19 May 2014 (UTC)
Are you thinking to port to android? (I used to play unnethack on my phone.) --Transcendreamer (talk) 10:02, 19 May 2014 (UTC)
Glad that you like it! Unfortunately there would have to be many hundreds of tiles for the monsters alone, and also some for new items; the sourcecode (especially monst.c) shows what's been added. Compared to vanilla SLASH'EM, there are about twice as many monsters now. About an Android port, I'd do that if only I knew how... maybe there is a step-by-step guide on how to compile the game for Android (or other platforms)? --Bluescreenofdeath (talk) 11:26, 19 May 2014 (UTC)
Wow, twice compared to slashem, it rocks. Probably they will not even fit in a single file. Maybe is it possible to group monsters/items and make them using shared tiles? E.g. Kobolt uses Kobold tile, Ogro - Ogre tile, Trollor - Troll tile, etc. So we will need some kind of mapping table for those monsters/items which could be mapped on shared tiles. And for the rest unique monster/items I will draw a new tiles. What do you think? Or they all are mostly unique? --Transcendreamer (talk) 12:15, 19 May 2014 (UTC)
I'm not a programmer but it seems to me that there's a bundle for android and at least 2 nethack ports are using it: https://code.google.com/p/android-nethack-port/ Inside source repository there is a svn/trunk/sys/android folder, and readme file contains build instructions accompanied with android specific resource files. --Transcendreamer (talk) 12:15, 19 May 2014 (UTC)
Well I did take a look at the android code, but it seems the compilation instructions are for Linux/Ubuntu systems, and all the PCs that I use are running Windows. Maybe there would be some way to make it work, but it's certainly not going to be easy. And also, real life is currently limiting the amount of time I can spend on Slash'EM Extended, unfortunately... Of course some tiles could be shared, but there's also lots of all-new stuff (like wall/rub monsters), and I'd also need to figure out how to add new tiles to the game in the first place. But if you really want to make them, I'll see what I can do. --Bluescreenofdeath (talk) 07:02, 20 May 2014 (UTC)

Version History

BsoD,

Could we get a Version History?

Useful information might include - version (your version #), date released, what did you change and/or add, are previous version Bones files supported

--Diesalot (talk) 20:16, 27 May 2014 (UTC)

I fear that's not very easy for me to do, since I didn't really take notes on which versions added/changed what. The main Slash'EM Extended page mentions for a few features when they were added (mainly new races/classes), and the other thing that I can do is to make a chronological list showing the order in which most of the new stuff was added, but without exact version numbers unfortunately. Currently, most of the time old savegames and bones files will no longer work upon updating; I hope that if some day all the items, monsters and roles/races that I want in the game have been added, compatibility will be better. However the variant is still in a WIP state; the current release version is stable and playable, but new versions are appearing often.
Also, I got your logfile and analyzed it a bit. Your version of the game is more than a month old, however; I remember that being the version where enemies with firearms were grossly overpowered, as evidenced by the fact that most of your characters died to bullets. Enemy gunslingers have been nerfed quite a bit since then, and there will (probably) be a new version soon that improves the player's chances of surviving their attacks even more. What amazes me is that the lycanthropic Knight was actually your best run; my own lycanthropic characters seem to die a lot earlier, despite my efforts to make that race not suck... Many of the harder races (insectoid, mould, ungenomold etc.) have also been improved, so they should be more playable now. Some of your most obscure deaths were the following ones: "killed by a petty black widow" - this must obviously have been a polytrap abomination, since that is a level 24 creature that shouldn't be normally generated on dlvl5. "poisoned by a brown pudding" - yeah, pudding farming is a lot harder to do, and puddings have some evil disease-inflicting attacks so it's probably best to take them out with ranged attacks or spells. And "killed by a died" is actually a bug; I suppose it was some sort of disintegration attack, which have the weird tendency to give that message instead of "killed by an antimatter vortex" or similar. Of course, if it actually was an antimatter vortex that killed you, it was another outta-depth spawn (probably a polytrap abomination) on dlvl4.
Thanks for the feedback, I'll keep on working to make Slash'EM Extended more enjoyable (especially by making the early game a bit less deadly while late game remains dangerous) and also try to create some sort of version history. --Bluescreenofdeath (talk) 06:12, 28 May 2014 (UTC)

Thanks for the feedback, I appreciate it all. I am now using your most recent version and will log as many games as I am able until your next update (I'll be sure to dump the 50 games I sent you from the next log file). My current Snake Valkyrie just found the first Noble artifact in Minetown - I have not wielded it (yet), but it could prove pretty helpful. --Diesalot (talk) 15:58, 28 May 2014 (UTC)

A rudimentary version history has been created. It's very incomplete though, as I unfortunately didn't take enough notes to see which version changed what. Still, I guess it's better than nothing. --Bluescreenofdeath (talk) 09:51, 6 June 2014 (UTC)

Bug Report

Perhaps you have already squashed this - it is from your End of May 2014 version. When selling a crude short sword in a shop: "Manlobbi offers 4 pieces of eightghtghtghtghtghtghtghtghtghtghtghtghtghtghtghtght" (that's "ght" 16 times) --Diesalot (talk) 17:10, 10 June 2014 (UTC)

This is a side effect of the Pirate role; actually I don't know why the game is doing this, since it's supposed to simply transform "zorkmids" into "pieces of eight", but since I don't know how to fix it and it's (hopefully) not crashing the game, it hasn't yet been fixed. Of course it is a bug though; I recall floating eyes also giving similarly weird messages... --Bluescreenofdeath (talk) 05:56, 11 June 2014 (UTC)
I found out why the game does this. That happens if you copy a string unto himself. Appearently there is a failsafe feature in this C-Compilers sprintf() funktion, beacause the "normal" effect would be that your computer crashes. During the course of this day, I will write a Bugfix, and post it here or write an E-mail to Amy (if I find your adress). Until when better don't play a pirate. -- CK 79.225.101.242 07:24, 13 June 2014 (UTC)

OK, it is done. As you are German, like me, this makes things a lot of easier. Der Fehler ist in der Funktion replace() in PLINE.C . Die erzeugt einen String und Schreibt ihn immer in den gleichen globalen char vektor buffer[]. Wenn ein String, mit dem replace() mehrmals aufgerufen wird als Parameter von pline() auftritt, wird beim ersten Aufruf das Ergebnis in buffer zurückgeliefert, und beim zweiten Aufruf ist buffer somit der Parameter *st der Funktion replace(). Die Funktion replace() muss also einen String an Ort und Stelle verändern. Das geht solange gut, wie der einzusetzende String *repl kleiner als der zu ersetzende String *orig ist. Ist jedoch *repl größer, wird beim einsetzen von *repl, der zu erhaltende Schwanz von *st (das ja identisch mit buffer[] ist) überschrieben. Danach versucht sprintf() den Schwanz, der ja bereits überschrieben ist, an eine Stelle nach seinem Anfang kopiert. Es werden also in der Mitte des Strings Buchstaben gelesen, die ans Ende angefügt werden. Der String wird also immer länger, da der Lesezeiger von printf() immer wieder die bereits geschriebenen Buchstaben einliest und den String weiter verlängert, und somit den String bis ins Unendliche verlängert.

"You hit the floating eye.",0
"Ye hit the floating eye.",0
;/------------------------------------- String
;|                              /------ Terminator
;|                              |  /--- Schrott am Ende
;v                              v  v
"Ye hit the floating deadlight",0,"qwertzuiopü..."
;                       ^       ^
;                       |       \- Destiny
;                       \--------- Source
;                              /--- Schrott am Ende
;                              |
;                              v
"Ye hit the floating deadlightdqwertzuiopü..."
"Ye hit the floating deadlightdlwertzuiopü..."
"Ye hit the floating deadlightdliertzuiopü..."
"Ye hit the floating deadlightdligrtzuiopü..."
"Ye hit the floating deadlightdlightzuiopü..."
"Ye hit the floating deadlightdlightzuiopü..."
;                             ^     ^
;                             |     \- Destiny
;                             \------- Source
"Ye hit the floating deadlightdlightduiopü..."
"Ye hit the floating deadlightdlightdliopü..."
"Ye hit the floating deadlightdlightdliopü..."
"Ye hit the floating deadlightdlightdligpü..."
"Ye hit the floating deadlightdlightdlighü..."
"Ye hit the floating deadlightdlightdlight..."
;                                   ^     ^
;                                   |     \- Destiny
;                                   \------- Source

; Das ganze geht weiter bis beim Zeiger Source ein Terminato (0)
; gefunden wird, was aber niemals passiert

--CK 79.225.101.242 09:12, 13 June 2014 (UTC)