* First cmake list file, simple docs.
TODO: utils folder.
* Support for building utils
* All fields except HAVE_DOPRNT in place
* Now builds and runs :)
time the mob is harmed, through any means.
Valid return values:
-1: prevents damage from occurring. Will also prevent a fight from
starting.
0: forces a miss.
>0 : the damage the mob will endure.
Available variables:
%actor%: the one doing the damage
%victim%: typically the same as %self% - the one being attacked
%damage%: the damage inflicted. Always a non-negative number.
%attacktype%: The attack type. Will be UNDEFINED when hitting with a
weapon.
* perform_immort_where and print_object_location rewritten to handle paging.
Fixes#141
* A little more info in immort where now we have more space for output.
Fixes#141
* Added PRF_VERBOSE for toggling long output in where command.
Fixes#141
* Also toggle headers in `where x` depending on verbose-pref.
Fixes#141
* removed useless util/webster.c and fixed a couple of potential buffer overruns in the util functions
* removed stray utf-8 error chars. I guess someone has used an editor with fancy 's
* removed last webster integrations
Based on error report from JTP in the tbamud forums. If an attacker was able to start a session and then break the connection, the process_output function would fail. This would trigger two calls to close_socket on the same descriptor. This in turn results in a double free on the character struct.
https://www.tbamud.com/kunena/4-development/5617-another-core-dump-not-long-after-the-one-earlier
Thanks to JTP for the bug report.
continued the loop, not returned since it isn't likely to be the end of
the wld file.
Added the ability to specify multiple files on the command line. This
will load all files passed before processing into html files. This is to
fix the 'missing exits' from the output html files. The prior version
only worked on a single zone or wld file and generated incomplete
output. The record count was moved global to enable proper tracking of
the entire world. The index_boot function was modified to scan the files
first, get a record count, then start over and load the room records.
example usage: wld2html *.wld
This command will generate the entire world as one html file per room.
Fixed room number roll over. The original was using a short int which is
a 16bit int and rolls at 32k.
Fixed an issue where the html files would get negative names due to
integer rollover. It had something to do with sprintf an int using %d,
but only if you passed that to fopen. Casting the int (room number) to
a long before using sprintf with %ld fixed the issue.
Added the missing four directions from the dir_names array and defines.
Co-authored-by: Dan Danese <biouxtia@danese.us>
Triggers on elements of the room break this utility. Added code to toss them since we don't need them. Can add handling that pulls the trigger info later if desired, but too time consuming to index them before building the room for this simple tool.
Used code formatter to correct indentations and align all {} in lACMD(do_exits)
Checked for unmactched braces and found none.
My code editor shows all {} are matched.
Used code formatter to correct indentations and align all {} in the look_at_room()
Checked for unmactched braces and found none.
My code editor shows all {} are matched.
Fixes unguarded blocks of code in ACMD(do_exits) that could cause the server to report scripted trigger events (mob movements, exit links to rooms being reassigned, and doors being opened or closed) as script errors. Particularly, if this code is copy and pasted into the do_auto_exits().
Fixes the display order of objects in obj_to_room().
Objects are now displayed in the order they are placed/dropped. This prevents fountains, boards, etcetera from "moving" around the room.
This corrects an issue encountered when loading world information on the Raspberry Pi. Sometimes, there is a ~ stored in the memory location in front of tmp char array. The for loop will decrement below the starting memory address, making it read the ~ and think it's at the end of the room, causing an error and preventing the MUD from loading.
This change checks the memory address of tmp, ensuring it is > the starting memory address before decrementing it in the for() loop. Then, the if/else checks to ensure the carriage return and newline are properly placed to prevent duplication.
* Make sure all followers are free'd before freeing the character list
Otherwise, the followers structs will point to free'd memory and
the stop_follower call will attempt to dereference a free'd
characters' followers list.
* fix gcc warning: truncation in strncat
In file included from /usr/include/string.h:494,
from sysdep.h:74,
from act.item.c:12:
In function ‘strncat’,
inlined from ‘name_from_drinkcon’ at act.item.c:804:5,
inlined from ‘name_from_drinkcon’ at act.item.c:769:6:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:136:10: warning: ‘__builtin_strncat’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
act.item.c: In function ‘name_from_drinkcon’:
act.item.c:797:16: note: length computed here
797 | cpylen = strlen(cur_name);
| ^~~~~~~~~~~~~~~~
* Whitespace cleanup before bugfix
* Fix warnings for gcc-9.2.1
Also, fixed an ancient FIXME and a known bad strcat usage.
spell_parser.c: In function ‘say_spell’:
spell_parser.c:135:75: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 216 [-Wformat-truncation=]
135 | snprintf(buf1, sizeof(buf1), "$n stares at you and utters the words, '%s'.",
| ^~
In file included from /usr/include/stdio.h:867,
from sysdep.h:69,
from spell_parser.c:12:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: ‘__builtin___snprintf_chk’ output between 43 and 298 bytes into a destination of size 256
We're leveraging the lookup table, because it's a safer way
to see if an object has been free'd than looking at the object
itself (which while it may work may just as well fail).
Fixes#83
* Make sure all followers are free'd before freeing the character list
Otherwise, the followers structs will point to free'd memory and
the stop_follower call will attempt to dereference a free'd
characters' followers list.
* https://github.com/tbamud/tbamud/issues/79 typo
* https://github.com/tbamud/tbamud/issues/81 nullpointer crash on syntax check run
* NUM_AFF_FLAGS fix.
Now, consistently, the NUM_AFF_FLAGS is used in the same way as other
NUM_* variables. Specifically, the the number is consistent with
how others are defined - 1 above the highest in the list.
I would like to have removed the need to start from 1 instead of 0
as well, but the loading mechanism, and thus potentially a lot of
existing object files, use 0 as a marker for "no flags set", and
we can't easily fix that. So, the places we loop through the list,
we still need to make sure we're stying within the [1;NUM_AFF_FLAGS) interval.
Simultaneously, I've checked over the other flags, and it seems like
the usage is pretty consistent there.
Fixes https://github.com/tbamud/tbamud/issues/78
* Make sure all followers are free'd before freeing the character list
Otherwise, the followers structs will point to free'd memory and
the stop_follower call will attempt to dereference a free'd
characters' followers list.
* Make sure %target% works in act triggers
* code cleanup. Remove inline block, make variable names more understandable.
Ref https://www.tbamud.com/forum/4-development/4525-confused-over-piece-of-code-in-parse-room
Otherwise, the followers structs will point to free'd memory and
the stop_follower call will attempt to dereference a free'd
characters' followers list.
* make Makefile more portable
tbamud doesn't build on FreeBSD or OpenBSD. This series of commits are meant to make those builds work by making the Makefile more portable.
I should mention that I've never used tbamud before today, so please read my pull request carefully.
This commit itself fixes the first issue encountered. I assume wildcard and patsubst are gmake-only.
* Update Makefile.in
It turns out using the backslash to escape newlines in this situation is not portable.
* Delete Makefile.in
Will re-add. There are problems with this file. It's marked executable when it shouldn't be, and has ^M characters which prevent builds on OpenBSD.
* re-add Makefile.in