24 Commits

Author SHA1 Message Date
f6c8c764ca patch for Grenzland zone
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-27 23:26:30 +01:00
94b9b69eec commit after restart 2026-01-26 23:35:20 +01:00
f6cbe30c10 Merge pull request 'grenzland-region' (#3) from agroschim/grenzland-mud:grenzland-region into master
Some checks failed
C/C++ CI / build (push) Has been cancelled
Reviewed-on: #3
2026-01-26 20:58:06 +01:00
agroschim
1127cb5d3e Bugfix in trigger #49100
Some checks failed
C/C++ CI / build (pull_request) Has been cancelled
2026-01-22 21:24:17 +01:00
60c28bbfee merge upstream
Some checks failed
C/C++ CI / build (pull_request) Has been cancelled
2026-01-22 21:03:28 +01:00
agroschim
168bdc20b7 First level of the library dungeon 2026-01-22 21:01:22 +01:00
1433fb4145 not needed
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-22 17:32:38 +01:00
b38e0deaf8 test
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-22 17:31:23 +01:00
agroschim
cd6d42146b Added more rooms to the Grenzland Building 2026-01-22 17:24:20 +01:00
1a6953dc9f Merge branch 'master' of https://gitea.wilderland.ovh/kyonshi/grenzland-mud
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-22 12:25:26 +01:00
9b9bb8eab5 moving stuff around 2026-01-22 12:23:29 +01:00
agroschim
6fb926bd21 Made the shops work
Some checks failed
C/C++ CI / build (pull_request) Has been cancelled
2026-01-20 21:32:00 +01:00
agroschim
237948350d Restructured the zone and fleshed out the Grenzland Building. 2026-01-20 20:13:49 +01:00
agroschim
7ab0918c9c Add the first rooms of the Grenzland Building in Midgaard 2026-01-20 18:41:24 +01:00
b1844be82d Update README.md
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-20 16:14:59 +01:00
8fd4d5b234 Merge branch 'master' of https://gitea.wilderland.ovh/kyonshi/grenzland-mud
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-20 16:13:41 +01:00
5ac7427a6f Merge branch 'grenzland' 2026-01-20 16:11:17 +01:00
37ba5ea608 yep
Some checks failed
C/C++ CI / build (pull_request) Has been cancelled
2026-01-20 01:03:20 +01:00
agroschim
1678f66809 Initial commit 2026-01-19 21:29:53 +01:00
e0083e3767 Update README.md
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-16 17:40:31 +01:00
8125d736c9 new branch Grenzland 2026-01-16 13:31:28 +01:00
c8e9cd8dc6 Update README.md
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-16 13:27:16 +01:00
44a7ac0308 changes to text files
Some checks failed
C/C++ CI / build (push) Has been cancelled
2026-01-16 13:24:46 +01:00
Thomas Arp
4e1680db1a KAIZEN remove webster from CMakeLists.txt (#158) 2025-11-07 23:53:23 +01:00
164 changed files with 12644 additions and 10765 deletions

View File

@@ -1,55 +0,0 @@
---
Language: Cpp
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignOperands: Align
AlignTrailingComments: true
AlwaysBreakTemplateDeclarations: Yes
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: false
BeforeLambdaBody: true
BeforeWhile: true
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBraces: Custom
BreakBeforeBinaryOperators: All
BreakConstructorInitializers: AfterColon
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: false
IncludeCategories:
- Regex: '^<.*'
Priority: 1
- Regex: '^".*'
Priority: 2
- Regex: '.*'
Priority: 3
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentCaseBlocks: true
IndentWidth: 2
InsertNewlineAtEOF: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 2
NamespaceIndentation: All
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
TabWidth: 2
...

4
.gitignore vendored
View File

@@ -63,6 +63,10 @@ lib/plrobjs/index
!lib/plrobjs/U-Z/00 !lib/plrobjs/U-Z/00
!lib/plrobjs/ZZZ/00 !lib/plrobjs/ZZZ/00
#don't commit logs
!log/*
!syslog.CRASH
# also not autogenerated config file # also not autogenerated config file
/lib/etc/config /lib/etc/config
# or the list of last logins # or the list of last logins

View File

@@ -1,3 +1,5 @@
Files for tbaMUD.
Files for Grenzland-MUD
Files for grenzland-mud, forked from tbamud

View File

@@ -1 +0,0 @@
select foo.com 1745106858 Welcor

BIN
lib/etc/board.grenzland Normal file

Binary file not shown.

View File

@@ -1,8 +1,10 @@
(lib/text/background) (lib/text/background)
There once was a guy who played MUDs The mists part and you find yourself in a
But the MUDs that he played were all duds world unlike the one you have just left.
"I'll write one," said he. Reality twisted and turned, and the land
And he brushed off his C. has found itself in a new configuration.
And soon played his game with his buds. Enter the borderland of reality and find
your own way.
In the Grenzland.

View File

@@ -1,7 +1,13 @@
T B A M U D
2 0 2 5
G R E N Z L A N D M U D
2 0 2 6
Based on tbaMUD, by The Builder Academy
Based on CircleMUD by Jeremy Elson and DikuMUD by Hans-Henrik Staerfeldt, Based on CircleMUD by Jeremy Elson and DikuMUD by Hans-Henrik Staerfeldt,
Katja Nyboe, Tom Madsen, Michael Seifert, and Sebastian Hammer Katja Nyboe, Tom Madsen, Michael Seifert, and Sebastian Hammer
By what name do you wish to be known?
Oh hero, by what name shall you wish to be known?

View File

@@ -1,8 +1,12 @@
(lib/text/policies) (lib/text/policies)
This file should list, in no uncertain terms, the policies you must abide Right now we are all adults and should be able to interact with
by on this MUD. each other without any larger issues.
But the Grenzland maxim still is in force:
We are here to play, don't piss into anyone else's beer.
Bug the higher-ups to make some policies and write them in this file, lest No harassing, no doxxing, no sexism, racism, or other unacceptable
a political disaster ensue... isms towards your fellow players.
We definitely should add something more worked out in here.

View File

@@ -11,3 +11,4 @@
Gods Gods
~~~~ ~~~~
kyonshi

25
lib/world/mob/491.mob Normal file
View File

@@ -0,0 +1,25 @@
#49100
waiter~
the waiter~
A waiter who knows all his customers is serving drinks here.
~
He looks very nice. But I bet he packs a punch.
~
24586 0 0 0 0 0 0 0 600 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
#49101
shopkeeper~
the shopkeeper~
A friendly man reading a zine is sitting behind the counter.
~
He looks very nice. But I bet he packs a punch.
~
24586 0 0 0 0 0 0 0 600 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
$

66
lib/world/mob/492.mob Normal file
View File

@@ -0,0 +1,66 @@
#49200
book worm~
the book worm~
A creepy little book work is crawling through the books.
~
Yuck! I bet they eat books!
~
72 0 0 0 0 0 0 0 -250 E
1 20 9 0d0+10 1d2+0
10 100
8 8 0
E
#49201
apprentice~
Master Ultan's apprentice~
One of Master Ultan's apprentices stands here looking confused.
~
He is clinging to a book he has never read. He looks harmless, but
you never can tell.
~
76 0 0 0 0 0 0 0 0 E
2 20 8 0d0+20 1d2+0
20 400
8 8 1
E
#49202
journeyman guard~
Master Ultan's journeyman~
One of Master Ultan's journeymen stands guard here.
~
The Journeyman is responsible for protecting the books from being read.
What a strange guild they are!
~
10 0 0 0 0 0 0 0 0 E
3 19 8 0d0+30 1d2+0
30 900
8 8 1
E
#49203
book thief~
the book thief~
An imp-like thing is sneaking thorugh the shelves, stealing books.
~
A tiny, vaguely humanoid shaped creature. Before you ever get a
good look at it, it darts back into the shelves.
~
236 0 0 0 0 0 0 0 -800 E
3 19 8 0d0+30 1d2+0
30 900
8 8 1
E
#49204
master ultan~
Master Ultan~
Master Ultan stands here, touching books with his creepy finger.
~
He is the head of the Librarians Guild, which hoards books. He is
an old man, haggard and nearly blind. He looks like a harmless old
man, but he has survived thus far.
~
10 0 0 0 0 0 0 0 0 E
5 19 7 1d1+50 1d2+0
50 2500
8 8 1
E
$

View File

@@ -182,6 +182,8 @@
343.mob 343.mob
345.mob 345.mob
346.mob 346.mob
491.mob
492.mob
555.mob 555.mob
556.mob 556.mob
653.mob 653.mob

73
lib/world/obj/49.obj Normal file
View File

@@ -0,0 +1,73 @@
#4900
boards bulletin gen_boards~
a bulletin board~
A small bulletin board is mounted on a wall here.~
~
13 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0
E
bulletin~
Use 'look board' to read the board.
~
E
board~
If you can read this, the board is not working.
~
#4901
bottle beer~
a bottle~
A beer bottle has been left here.~
~
17 0 0 0 0 a 0 0 0 0 0 0 0
8 8 1 0
10 20 8 0 0
#4902
bottle dark ale~
a bottle~
A dark bottle of ale has been left here.~
~
17 0 0 0 0 a 0 0 0 0 0 0 0
8 8 3 0
10 10 3 0 0
#4903
bottle firebreather~
a bottle~
A bottle of firebreather has been left here.~
~
17 0 0 0 0 a 0 0 0 0 0 0 0
8 8 7 0
10 50 17 0 0
#4904
bottle local~
a bottle~
A dark bottle has been left here.~
~
17 0 0 0 0 a 0 0 0 0 0 0 0
8 8 8 0
10 20 7 0 0
#4905
zine~
the grenzland zine~
A tiny zine labelled "Grenzland No. 7" was left here.~
~
12 0 0 0 0 a 0 0 0 0 0 0 0
0 0 0 0
1 4 0 0 0
E
zine~
It looks like the 7th issue of the Grenzland Zine. This issue
focuses on High Level Adventures, and - look! - there is a report from
the ongoing Arden Vul campaign in there too!
~
#4906
dagger~
a dagger~
A dagger is lying here.~
~
5 ag 0 0 0 ano 0 0 0 0 0 0 0
0 1 4 11
1 1 0 0
A
19 1
$

22
lib/world/obj/491.obj Normal file
View File

@@ -0,0 +1,22 @@
#49103
sink water~
a sink~
A sink with a tap.~
~
23 cde 0 0 0 0 0 0 0 0 0 0 0
500 500 0 0
505 0 0 0 0
E
sink tap~
It is an ordinary sink with a tap. You might fill your canteen
here.
~
#49104
key~
a small key~
A smalk brass key.~
~
18 c 0 0 0 a 0 0 0 0 0 0 0
1 0 0 0
1 1 0 0
$

View File

@@ -38,6 +38,7 @@
44.obj 44.obj
45.obj 45.obj
46.obj 46.obj
49.obj
50.obj 50.obj
51.obj 51.obj
52.obj 52.obj
@@ -181,6 +182,7 @@
343.obj 343.obj
345.obj 345.obj
346.obj 346.obj
491.obj
555.obj 555.obj
556.obj 556.obj
653.obj 653.obj

51
lib/world/shp/491.shp Normal file
View File

@@ -0,0 +1,51 @@
CircleMUD v3.0 Shop File~
#49100~
4901
4902
4903
4904
-1
1.50
0.75
-1
%s Sorry, I don't stock that item.~
%s You don't seem to have that.~
%s I don't trade in such items.~
%s I can't afford that!~
%s You are too poor!~
%s That'll be %d coins, thanks.~
%s I'll give you %d coins for that.~
0
2
49100
0
49100
-1
0
28
0
0
#49102~
4905
-1
1.50
0.75
-1
%s Sorry, I don't stock that item.~
%s You don't seem to have that.~
%s I don't trade in such items.~
%s I can't afford that!~
%s You are too poor!~
%s That'll be %d coins, thanks.~
%s I'll give you %d coins for that.~
0
2
49101
0
49102
-1
0
28
0
0
$~

View File

@@ -163,6 +163,7 @@
343.shp 343.shp
345.shp 345.shp
346.shp 346.shp
491.shp
555.shp 555.shp
556.shp 556.shp
653.shp 653.shp

12
lib/world/trg/491.trg Normal file
View File

@@ -0,0 +1,12 @@
0;190;19M0;190;19m#49100
Editorial Room Key - 49104~
2 c 0
l~
if %cmd.mudcommand% == look && !%actor.has_item(49104)%
%echo% Wait? Is that a key lying there!? Better pick that up!
%load% obj 49104 %actor% inv
else
return 0
end
~
$~

View File

@@ -182,8 +182,10 @@
343.trg 343.trg
345.trg 345.trg
346.trg 346.trg
491.trg
555.trg 555.trg
556.trg 556.trg
653.trg 653.trg
654.trg 654.trg
$ $

View File

@@ -637,10 +637,17 @@ You see Poor Alley.
S S
#3026 #3026
The Dark Alley~ The Dark Alley~
The dark alley, to the west is the common square and to the south is the The dark alley, to the west is the common square and to the south
Guild of Thieves. The alley continues east. is the Guild of Thieves. The alley continues east. You see a curious
building to the north you swear wasn't here the last time you have
been to this dark alley.
~ ~
30 0 0 0 0 1 30 0 0 0 0 1
D0
This building wasn't here last time, right?
~
~
0 -1 49101
D1 D1
The alley continues east. The alley continues east.
~ ~

10
lib/world/wld/49.wld Normal file
View File

@@ -0,0 +1,10 @@
#4900
In a Time and Place before Creation~
You are standing in the Void. Earth and Sky have not yet been
separated. Nothing has form here, except the Celestial Mound rising
above the shapeless waters of Nu. Could this be a time and place
before Creation?
~
49 ce 0 0 0 0
S
$

162
lib/world/wld/491.wld Normal file
View File

@@ -0,0 +1,162 @@
#49100
The Grenzland Club~
You are in the woodpaneled club room of the Grenzland Building.
People are talking quietly or reading in silence. There is a fire
crackling in the hearth to the North. To the West is a restroom. To
the South is the Entry Hall. To the East is a nice looking bar.
~
491 de 0 0 0 0
D2
You see the Entry Hall to the Grenzland Building.
~
~
1 -1 49101
D3
You see the restroom.
~
~
1 -1 49103
S
#49101
The Entry Hall to the Grenzland Building~
You are in the Entry Hall to the Grenzland Building. To the North
you see the Grenzland Club room. To the West is a door with a small
note pinned to it. To the South you see the Entry Hall. To the South
is a Dark Alley in Midgaard. To the East you see the Grenzland Shop.
A double staircase leads up to the Balcony.
~
491 de 0 0 0 0
D0
You see the Grenzland Club room.
~
~
1 -1 49100
D1
You see the Grenzland Shop.
~
~
1 -1 49102
D2
You see a Dark Alley.
~
~
1 -1 3026
D4
You see the Balcony from below.
~
~
1 -1 49110
E
note~
The note reads:
This door will lead to a teleporter room in the future.
- a.
~
S
#49102
The Grenzland Shop~
You are in the Grenzland Shop. The room is full of books, zines,
dice, minis, and game boxes! The exit is to the West, but do you
really want to leave?
~
491 de 0 0 0 0
D1
You see the Entry Hall.
~
~
1 -1 49101
S
#49103
The Restroom~
You are in the restroom of the Grenzland Club. The exit is to the
East. To the south are some bathroom stalls.
~
491 de 0 0 0 0
D1
You see the Grenzland Club room.
~
~
1 -1 49100
D2
You see bathroom stalls.
~
~
1 -1 49104
S
#49104
Bathroom Stalls~
Well, these are bathroom stalls. Quite clean.
~
491 de 0 0 0 0
D0
You see the sink and the exit.
~
~
1 -1 49103
E
stall stalls toilet toilets room~
Surprisingly clean.
~
S
T 49100
#49110
The Balcony above the Entry Hall~
This is the Balcony above the Entry Hall To the North is the
Library. From the door to the East you hear busy typing. The door to
has a brass plaque on it. A double staircase leads down to the Entry
Hall.
~
491 de 0 0 0 0
D0
You see a double-winged door leading into the Library.
~
~
1 -1 49112
D1
You see a door with a brass plaque on it.
~
~
1 49104 49111
D5
You see the Entry Hall from above.
~
~
1 -1 49101
E
note plaque door~
The plaque reads: "Grenzland Zine Editorial Room"
~
S
#49111
The Grenzland Zine Editorial Room~
This is supposed to be the editorial room of the Grenzland Zine.
Dozens of monkeys chained to typwriters type frantically. This is a
joke, right?
~
491 de 0 0 0 0
D3
You see the Balcony above the Entry Hall.
~
~
1 49104 49110
S
#49112
The Library~
The walls are bookshelves and the room is filled with plenty of
winged chairs, reading desks and map tables. One book shelves to the
North seems to be a door of some sort?
~
491 de 0 0 0 0
D0
A curious door. Where might it lead?
~
~
1 -1 49200
D2
You see the Balcony above the Entry.
~
~
1 -1 49110
S
$

286
lib/world/wld/492.wld Normal file
View File

@@ -0,0 +1,286 @@
#49200
The Entrance to the Library Maze~
This seems to be some secret section of the library. There is
shelves full of books everywhere! Let's hope you don't get lost here.
~
492 d 0 0 0 0
D0
The shelves continue North.
~
~
0 -1 49202
D3
The shelves continue West.
~
~
0 -1 49201
D2
Through the door you see the Library of the Grenzland Build.
~
~
1 -1 49112
S
#49201
A dead end in the Library Maze~
This is a dead end. There is shelves full of books everywhere!
Let's hope you don't get lost here.
~
492 d 0 0 0 0
D1
The shelves continue East.
~
~
0 -1 49200
S
#49202
A corridor in the Library Maze~
This is a corridor. It continues North and South. There is
shelves full of books everywhere! Let's hope you don't get lost here.
~
492 d 0 0 0 0
D0
The shelves continue North.
~
~
0 -1 49203
D2
The shelves continue South.
~
~
0 -1 49200
S
#49203
A junktion in the Library Maze~
This is a junktion. Corridors continue East, South, and West. A
door leads North. There is shelves full of books everywhere! Let's
hope you don't get lost here.
~
492 d 0 0 0 0
D0
A door leads north
~
~
1 -1 49210
D1
The shelves continue East.
~
~
0 -1 49207
D2
The shelves continue South.
~
~
0 -1 49202
D3
The shelves continue West.
~
~
0 -1 49204
S
#49204
A corridor in the Library Maze~
This is a corridor. It continues East and West. There is shelves
full of books everywhere! Let's hope you don't get lost here.
~
492 d 0 0 0 0
D1
The shelves continue East.
~
~
0 -1 49203
D3
The shelves continue West.
~
~
0 -1 49205
S
#49205
A corridor in the Library Maze~
This is a corridor. It continues East. A door leads south. There
is shelves full of books everywhere! Let's hope you don't get lost
here.
~
492 d 0 0 0 0
D1
The shelves continue East.
~
~
0 -1 49204
D2
A door leads South.
~
~
1 -1 49206
S
#49206
A Reading Room~
This seems to be a reading room. There are a few desks here. The
room has only one exit North.
~
492 d 0 0 0 0
D0
A door leads North.
~
~
1 -1 49205
S
#49207
A corridor in the Library Maze~
This is a corridor. It continues East and West. There is shelves
full of books everywhere! Let's hope you don't get lost here.
~
492 d 0 0 0 0
D1
The shelves continue East.
~
~
0 -1 49208
D3
The shelves continue West.
~
~
0 -1 49203
S
#49208
A junktion in the Library Maze~
This is a junktion. Corridors continue South and West. A door
leads North. There is shelves full of books everywhere! Let's hope
you don't get lost here.
~
492 d 0 0 0 0
D0
A door leads north
~
~
1 -1 49211
D2
The shelves continue South.
~
~
0 -1 49209
D3
The shelves continue West.
~
~
0 -1 49207
S
#49209
A dead end in the Library Maze~
This is a dead end. There is shelves full of books everywhere!
Let's hope you don't get lost here.
~
492 d 0 0 0 0
D0
The shelves continue North.
~
~
0 -1 49208
S
#49210
A dark corridor in the Library Maze~
This is a corridor. There are no light sources! The corridor
continues North. A door leads South. There is shelves full of books
everywhere! Let's hope you don't get lost here.
~
492 ad 0 0 0 0
D0
The shelves continue North.
~
~
0 -1 49214
D2
A door leads South.
~
~
1 -1 49203
S
#49211
A dark corridor in the Library Maze~
This is a corridor. There are no light sources! The corridor
continues North. A door leads South. There is shelves full of books
everywhere! Let's hope you don't get lost here.
~
492 ad 0 0 0 0
D0
The shelves continue North.
~
~
0 -1 49212
D2
A door leads South.
~
~
1 -1 49208
S
#49212
A dark corridor in the Library Maze~
This is a corridor. There are no light sources! The corridor
continues South and West. There is shelves full of books everywhere!
Let's hope you don't get lost here.
~
492 ad 0 0 0 0
D2
The shelves continue South.
~
~
0 -1 49211
D3
The shelves continue West.
~
~
1 -1 49213
S
#49213
A dark junktion in the Library Maze~
This is a junktion. There are no light sources! Corridors
continue East and West. A door leads North. There is shelves full
of books everywhere! Let's hope you don't get lost here.
~
492 ad 0 0 0 0
D0
A door leads north
~
~
1 -1 49215
D1
The shelves continue East.
~
~
0 -1 49212
D3
The shelves continue West.
~
~
0 -1 49214
S
#49214
A dark corridor in the Library Maze~
This is a corridor. There are no light sources! The corridor
continues East and South. There is shelves full of books everywhere!
Let's hope you don't get lost here.
~
492 ad 0 0 0 0
D1
The shelves continue East.
~
~
1 -1 49213
D2
The shelves continue South.
~
~
0 -1 49210
S
#49215
Master Ultan's Hideout~
This seems to be a reading room. There are no light sources here!
There are a few desks here. The room has only one exit South.
~
492 d 0 0 0 0
D2
A door leads South.
~
~
1 -1 49213
S
$

View File

@@ -38,6 +38,7 @@
44.wld 44.wld
45.wld 45.wld
46.wld 46.wld
49.wld
50.wld 50.wld
51.wld 51.wld
52.wld 52.wld
@@ -183,6 +184,8 @@
343.wld 343.wld
345.wld 345.wld
346.wld 346.wld
491.wld
492.wld
555.wld 555.wld
556.wld 556.wld
653.wld 653.wld

7
lib/world/zon/49.zon Normal file
View File

@@ -0,0 +1,7 @@
#49
GrenzlandMUD~
Grenzland~
4900 4999 15 2 d 0 0 0 1 33
S
$

21
lib/world/zon/491.zon Normal file
View File

@@ -0,0 +1,21 @@
#491
GrenzlandMUD~
Grenzland Building~
49100 49199 15 2 d 0 0 0 1 33
M 0 49100 1 49100 (the waiter)
G 1 4901 100 -1 (a bottle)
G 1 4902 100 -1 (a bottle)
G 1 4903 100 -1 (a bottle)
G 1 4904 100 -1 (a bottle)
M 0 49102 1 49101 (the shopkeeper)
G 1 4905 50 -1 (a zine)
R 0 49101 4900 -1 (a bulletin board)
O 0 4900 99 49101 (a bulletin board)
R 0 49103 49103 -1 (a sink)
O 0 49103 99 49103 (a sink)
R 0 49104 49104 -1 (a key)
D 0 49110 1 2
D 0 49111 3 2
D 0 49112 0 1
S
$

View File

@@ -0,0 +1,21 @@
#491
GrenzlandMUD~
Grenzland Building~
49100 49199 15 2 d 0 0 0 1 33
M 0 49100 1 49100 (the waiter)
G 1 4901 100 -1 (a bottle)
G 1 4902 100 -1 (a bottle)
G 1 4903 100 -1 (a bottle)
G 1 4904 100 -1 (a bottle)
M 0 4901 1 49102 (the waiter)
G 1 4905 100 -1 (a zine)
R 0 49101 4900 -1 (a bulletin board)
O 0 4900 99 49101 (a bulletin board)
R 0 49103 49103 -1 (a sink)
O 0 49103 99 49103 (a sink)
R 0 49104 49104 -1 (a key)
D 0 49110 1 2
D 0 49111 3 2
D 0 49112 0 1
S
$

35
lib/world/zon/492.zon Normal file
View File

@@ -0,0 +1,35 @@
#492
GrenzlandMUD~
The Library Maze~
49200 49299 15 2 d 0 0 0 1 7
M 0 49200 8 49200 (a book worm)
M 0 49200 8 49201 (a book worm)
M 0 49200 8 49201 (a book worm)
M 0 49200 8 49202 (a book worm)
M 0 49201 5 49202 (an apprentice)
M 0 49201 5 49203 (an apprentice)
M 0 49200 8 49205 (a book worm)
M 0 49202 2 49206 (a journeyman)
E 1 4906 99 16 (a dagger)
M 0 49200 8 49207 (a book worm)
M 0 49200 8 49208 (a book worm)
M 0 49201 5 49209 (an apprentice)
E 1 4906 99 16 (a dagger)
M 0 49203 3 49210 (a book thief)
M 0 49203 3 49212 (a book thief)
M 0 49202 2 49213 (a journeyman)
E 1 4906 99 16 (a dagger)
M 0 49204 1 49215 (master ultan)
E 1 4906 99 16 (a dagger)
G 1 4905 99 -1 (the grenzland zine)
D 0 49200 2 1
D 0 49203 0 1
D 0 49205 2 1
D 0 49206 0 1
D 0 49208 0 1
D 0 49210 2 1
D 0 49211 2 1
D 0 49213 0 1
D 0 49215 2 1
S
$

View File

@@ -38,6 +38,7 @@
44.zon 44.zon
45.zon 45.zon
46.zon 46.zon
49.zon
50.zon 50.zon
51.zon 51.zon
52.zon 52.zon
@@ -183,6 +184,8 @@
343.zon 343.zon
345.zon 345.zon
346.zon 346.zon
491.zon
492.zon
555.zon 555.zon
556.zon 556.zon
653.zon 653.zon

View File

@@ -1 +0,0 @@
This directory is for log files.

0
log/badpws Normal file
View File

0
log/delete Normal file
View File

0
log/dts Normal file
View File

13
log/errors Normal file
View File

@@ -0,0 +1,13 @@
SYSERR: bind: Address already in use
SYSERR: bind: Address already in use
SYSERR: bind: Address already in use
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
Jan 26 21:34:42 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
Jan 26 21:38:19 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...

0
log/godcmds Normal file
View File

0
log/help Normal file
View File

0
log/levels Normal file
View File

1
log/newplayers Normal file
View File

@@ -0,0 +1 @@
Jan 26 21:36:53 2026 :: Karrn [localhost] new player.

0
log/olc Normal file
View File

0
log/rentgone Normal file
View File

5
log/restarts Normal file
View File

@@ -0,0 +1,5 @@
Jan 26 21:00:54 2026 :: Running game on port 4000.
Jan 26 21:17:40 2026 :: Running game on port 4000.
Jan 26 21:25:55 2026 :: Running game on port 4000.
Jan 26 21:34:13 2026 :: Running game on port 4000.
Jan 26 21:34:49 2026 :: Running game on port 4000.

0
log/rip Normal file
View File

265
log/syslog.1 Normal file
View File

@@ -0,0 +1,265 @@
autorun starting game Mo 26. Jan 21:34:13 CET 2026
running bin/circle -q 4000
nohup: Eingabe wird ignoriert
No etc/config file, using defaults: No such file or directory
Jan 26 21:34:13 2026 :: Loading configuration.
Jan 26 21:34:13 2026 :: tbaMUD 2025
Jan 26 21:34:13 2026 :: Using lib as data directory.
Jan 26 21:34:13 2026 :: Running game on port 4000.
Jan 26 21:34:13 2026 :: Finding player limit.
Jan 26 21:34:13 2026 :: Setting player limit to 300 using rlimit.
Jan 26 21:34:13 2026 :: Opening mother connection.
Jan 26 21:34:13 2026 :: Binding to all IP interfaces on this host.
Jan 26 21:34:13 2026 :: Boot db -- BEGIN.
Jan 26 21:34:13 2026 :: Resetting the game time:
Jan 26 21:34:13 2026 :: No time file 'etc/time' starting from the beginning.
Jan 26 21:34:13 2026 :: Current Gametime: 23H 29D 15M 1044Y.
Jan 26 21:34:13 2026 :: Initialize Global Lists
Jan 26 21:34:13 2026 :: Initializing Events
Jan 26 21:34:13 2026 :: Reading news, credits, help, ihelp, bground, info & motds.
Jan 26 21:34:13 2026 :: Loading spell definitions.
Jan 26 21:34:13 2026 :: Loading zone table.
Jan 26 21:34:13 2026 :: 192 zones, 13824 bytes.
Jan 26 21:34:13 2026 :: Loading triggers and generating index.
Jan 26 21:34:13 2026 :: Loading rooms.
Jan 26 21:34:14 2026 :: 12758 rooms, 2347472 bytes.
Jan 26 21:34:14 2026 :: Renumbering rooms.
Jan 26 21:34:14 2026 :: Checking start rooms.
Jan 26 21:34:14 2026 :: Loading mobs and generating index.
Jan 26 21:34:14 2026 :: 3712 mobs, 118784 bytes in index, 2138112 bytes in prototypes.
Jan 26 21:34:14 2026 :: Loading objs and generating index.
Jan 26 21:34:14 2026 :: 4774 objs, 152768 bytes in index, 1145760 bytes in prototypes.
Jan 26 21:34:14 2026 :: Renumbering zone table.
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
Jan 26 21:34:14 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
Jan 26 21:34:14 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
Jan 26 21:34:14 2026 :: Loading shops.
Jan 26 21:34:14 2026 :: Loading quests.
Jan 26 21:34:14 2026 :: 1 entries, 128 bytes.
Jan 26 21:34:14 2026 :: Loading help entries.
Jan 26 21:34:14 2026 :: 2640 entries, 84480 bytes.
Jan 26 21:34:14 2026 :: Generating player index.
Jan 26 21:34:14 2026 :: Loading fight messages.
Jan 26 21:34:14 2026 :: Loaded 37 Combat Messages...
Jan 26 21:34:14 2026 :: Loading social messages.
Jan 26 21:34:14 2026 :: Social table contains 490 socials.
Jan 26 21:34:14 2026 :: Building command list.
Jan 26 21:34:14 2026 :: Command info rebuilt, 766 total commands.
Jan 26 21:34:14 2026 :: Assigning function pointers:
Jan 26 21:34:14 2026 :: Mobiles.
Jan 26 21:34:14 2026 :: Shopkeepers.
Jan 26 21:34:14 2026 :: Objects.
Jan 26 21:34:14 2026 :: Rooms.
Jan 26 21:34:14 2026 :: Questmasters.
Jan 26 21:34:14 2026 :: Assigning spell and skill levels.
Jan 26 21:34:14 2026 :: Sorting command list and spells.
Jan 26 21:34:14 2026 :: Booting mail system.
Jan 26 21:34:14 2026 :: Mail file read -- 0 messages.
Jan 26 21:34:14 2026 :: Reading banned site and invalid-name list.
Jan 26 21:34:14 2026 :: Loading Ideas.
Jan 26 21:34:14 2026 :: Loading Bugs.
Jan 26 21:34:14 2026 :: Loading Typos.
Jan 26 21:34:14 2026 :: Booting houses.
Jan 26 21:34:14 2026 :: No houses to load. File 'etc/hcontrol' does not exist.
Jan 26 21:34:14 2026 :: Cleaning up last log.
Jan 26 21:34:14 2026 :: Resetting #0: The Builder Academy Zone (rooms 0-99).
Jan 26 21:34:14 2026 :: Resetting #1: Sanctus (rooms 100-199).
Jan 26 21:34:14 2026 :: Resetting #2: Sanctus II (rooms 200-299).
Jan 26 21:34:14 2026 :: Resetting #3: Sanctus III (rooms 300-399).
Jan 26 21:34:14 2026 :: Resetting #4: Rename (rooms 400-499).
Jan 26 21:34:14 2026 :: Resetting #5: Newbie Farm (rooms 500-599).
Jan 26 21:34:14 2026 :: Resetting #6: Sea of Souls (rooms 600-699).
Jan 26 21:34:14 2026 :: Resetting #7: Camelot (rooms 700-799).
Jan 26 21:34:14 2026 :: Resetting #9: River Island of Minos (rooms 900-999).
Jan 26 21:34:14 2026 :: Resetting #11: Frozen Castle (rooms 1100-1199).
Jan 26 21:34:14 2026 :: Resetting #12: God Complex Merged with 343 (rooms 1200-1299).
Jan 26 21:34:14 2026 :: Resetting #13: TBA Examples (rooms 1300-1399).
Jan 26 21:34:14 2026 :: Resetting #14: TBA Examples II (rooms 1400-1499).
Jan 26 21:34:14 2026 :: Resetting #15: Straight Path (rooms 1500-1599).
Jan 26 21:34:14 2026 :: Resetting #16: Camelot II (rooms 1600-1699).
Jan 26 21:34:14 2026 :: Resetting #17: Camelot III (rooms 1700-1799).
Jan 26 21:34:14 2026 :: Resetting #18: Nuclear Wasteland (rooms 1800-1899).
Jan 26 21:34:14 2026 :: Resetting #19: Spider Swamp (rooms 1900-1999).
Jan 26 21:34:14 2026 :: Resetting #20: Arena (rooms 2000-2099).
Jan 26 21:34:14 2026 :: Resetting #22: Tower of the Undead (rooms 2200-2299).
Jan 26 21:34:14 2026 :: Resetting #25: High Tower of Magic (rooms 2500-2599).
Jan 26 21:34:14 2026 :: Resetting #26: High Tower of Magic II (rooms 2600-2699).
Jan 26 21:34:14 2026 :: Resetting #27: Memlin Caverns (rooms 2700-2799).
Jan 26 21:34:14 2026 :: Resetting #28: Mudschool (rooms 2800-2899).
Jan 26 21:34:14 2026 :: Resetting #30: Northern Midgaard (rooms 3000-3099).
Jan 26 21:34:14 2026 :: Resetting #31: Southern Midgaard (rooms 3100-3199).
Jan 26 21:34:14 2026 :: Resetting #32: Midgaard (rooms 3200-3299).
Jan 26 21:34:14 2026 :: Resetting #33: Three of Swords (rooms 3300-3399).
Jan 26 21:34:14 2026 :: Resetting #35: Miden'Nir (rooms 3500-3599).
Jan 26 21:34:14 2026 :: Resetting #36: Chessboard of Midgaard (rooms 3600-3699).
Jan 26 21:34:14 2026 :: Resetting #37: Capital Sewer System (rooms 3700-3799).
Jan 26 21:34:14 2026 :: Resetting #38: Capital Sewer System II (rooms 3800-3899).
Jan 26 21:34:14 2026 :: Resetting #39: Haven (rooms 3900-3999).
Jan 26 21:34:14 2026 :: Resetting #40: Mines of Moria (rooms 4000-4099).
Jan 26 21:34:14 2026 :: Resetting #41: Mines of Moria (rooms 4100-4199).
Jan 26 21:34:14 2026 :: Resetting #42: Dragon Chasm (rooms 4200-4299).
Jan 26 21:34:14 2026 :: Resetting #43: Arctic Zone (rooms 4300-4399).
Jan 26 21:34:14 2026 :: Resetting #44: Orc Camp (rooms 4400-4499).
Jan 26 21:34:14 2026 :: Resetting #45: Woodland Monastery (rooms 4500-4599).
Jan 26 21:34:14 2026 :: Resetting #46: Ant Hill (rooms 4600-4699).
Jan 26 21:34:14 2026 :: Resetting #49: Grenzland (rooms 4900-4999).
Jan 26 21:34:14 2026 :: Resetting #50: Great Eastern Desert (rooms 5000-5099).
Jan 26 21:34:14 2026 :: Resetting #51: Drow City (rooms 5100-5199).
Jan 26 21:34:14 2026 :: Resetting #52: City of Thalos (rooms 5200-5299).
Jan 26 21:34:14 2026 :: Resetting #53: Great Pyramid (rooms 5300-5399).
Jan 26 21:34:14 2026 :: Resetting #54: New Thalos (rooms 5400-5499).
Jan 26 21:34:14 2026 :: Resetting #55: New Thalos II (rooms 5500-5599).
Jan 26 21:34:14 2026 :: Resetting #56: New Thalos Wilderness (rooms 5600-5699).
Jan 26 21:34:14 2026 :: Resetting #57: Zodiac (rooms 5700-5799).
Jan 26 21:34:14 2026 :: Resetting #60: Haon-Dor, Light Forest (rooms 6000-6099).
Jan 26 21:34:14 2026 :: Resetting #61: Haon-Dor, Light Forest II (rooms 6100-6199).
Jan 26 21:34:14 2026 :: Resetting #62: Orc Enclave (rooms 6200-6299).
Jan 26 21:34:14 2026 :: Resetting #63: Arachnos (rooms 6300-6399).
Jan 26 21:34:14 2026 :: Resetting #64: Rand's Tower (rooms 6400-6499).
Jan 26 21:34:14 2026 :: Resetting #65: Dwarven Kingdom (rooms 6500-6599).
Jan 26 21:34:14 2026 :: Resetting #70: Sewer, First Level (rooms 7000-7099).
Jan 26 21:34:14 2026 :: Resetting #71: Second Sewer (rooms 7100-7199).
Jan 26 21:34:14 2026 :: Resetting #72: Sewer Maze (rooms 7200-7299).
Jan 26 21:34:14 2026 :: Resetting #73: Tunnels in the Sewer (rooms 7300-7399).
Jan 26 21:34:14 2026 :: Resetting #74: Newbie Graveyard (rooms 7400-7499).
Jan 26 21:34:14 2026 :: Resetting #75: Zamba (rooms 7500-7599).
Jan 26 21:34:14 2026 :: Resetting #78: Gideon (rooms 7800-7899).
Jan 26 21:34:14 2026 :: Resetting #79: Redferne's Residence (rooms 7900-7999).
Jan 26 21:34:14 2026 :: Resetting #83: Glumgold's Sea (rooms 8300-8399).
Jan 26 21:34:14 2026 :: Resetting #86: Duke Kalithorn's Keep (rooms 8600-8699).
Jan 26 21:34:14 2026 :: Resetting #90: Oasis (rooms 9000-9099).
Jan 26 21:34:14 2026 :: Resetting #96: Domiae (rooms 9600-9699).
Jan 26 21:34:14 2026 :: Resetting #100: Northern Highway (rooms 10000-10099).
Jan 26 21:34:14 2026 :: Resetting #101: South Road (rooms 10100-10199).
Jan 26 21:34:14 2026 :: Resetting #103: DBZ World (rooms 10300-10399).
Jan 26 21:34:14 2026 :: Resetting #104: Land of Orchan (rooms 10400-10499).
Jan 26 21:34:14 2026 :: Resetting #106: Elcardo (rooms 10600-10699).
Jan 26 21:34:14 2026 :: Resetting #107: Realms of Iuel (rooms 10700-10799).
Jan 26 21:34:14 2026 :: Resetting #115: Monestary Omega (rooms 11500-11599).
Jan 26 21:34:14 2026 :: Resetting #117: Los Torres (rooms 11700-11799).
Jan 26 21:34:14 2026 :: Resetting #118: The Dollhouse (rooms 11800-11899).
Jan 26 21:34:14 2026 :: Resetting #120: Rome (rooms 12000-12099).
Jan 26 21:34:14 2026 :: Resetting #125: Hannah (rooms 12500-12599).
Jan 26 21:34:14 2026 :: Resetting #130: Mist Maze (rooms 13000-13099).
Jan 26 21:34:14 2026 :: Resetting #140: Wyvern City (rooms 14000-14099).
Jan 26 21:34:14 2026 :: Resetting #150: King Welmar's Castle (rooms 15000-15099).
Jan 26 21:34:14 2026 :: Resetting #169: Gibberling Caves (rooms 16900-16999).
Jan 26 21:34:14 2026 :: Resetting #175: Cardinal Wizards (rooms 17500-17599).
Jan 26 21:34:14 2026 :: Resetting #186: Newbie Zone (rooms 18600-18699).
Jan 26 21:34:14 2026 :: Resetting #187: Circus (rooms 18700-18799).
Jan 26 21:34:14 2026 :: Resetting #200: Western Highway (rooms 20000-20099).
Jan 26 21:34:14 2026 :: Resetting #201: Sapphire Islands (rooms 20100-20199).
Jan 26 21:34:14 2026 :: Resetting #211: Tarot (rooms 21100-21199).
Jan 26 21:34:14 2026 :: Resetting #220: The Enchanted Kitchen (rooms 22000-22099).
Jan 26 21:34:14 2026 :: Resetting #232: Terringham (rooms 23200-23299).
Jan 26 21:34:14 2026 :: Resetting #233: Dragon Plains (rooms 23300-23399).
Jan 26 21:34:14 2026 :: Resetting #234: Newbie School (rooms 23400-23499).
Jan 26 21:34:14 2026 :: Resetting #235: Dwarven Mines (rooms 23500-23599).
Jan 26 21:34:14 2026 :: Resetting #236: Aldin (rooms 23600-23699).
Jan 26 21:34:14 2026 :: Resetting #237: Dwarven Trade Route (rooms 23700-23799).
Jan 26 21:34:14 2026 :: Resetting #238: Crystal Castle (rooms 23800-23899).
Jan 26 21:34:14 2026 :: Resetting #239: South Pass (rooms 23900-23999).
Jan 26 21:34:14 2026 :: Resetting #240: Dun Maura (rooms 24000-24099).
Jan 26 21:34:14 2026 :: Resetting #241: Starship Enterprise (rooms 24100-24199).
Jan 26 21:34:14 2026 :: Resetting #242: New Southern Midgaard (rooms 24200-24299).
Jan 26 21:34:14 2026 :: Resetting #243: Snowy Valley (rooms 24300-24399).
Jan 26 21:34:14 2026 :: Resetting #244: Cooland Prison (rooms 24400-24499).
Jan 26 21:34:14 2026 :: Resetting #245: The Nether (rooms 24500-24599).
Jan 26 21:34:14 2026 :: Resetting #246: The Nether II (rooms 24600-24699).
Jan 26 21:34:14 2026 :: Resetting #247: Graveyard (rooms 24700-24799).
Jan 26 21:34:14 2026 :: Resetting #248: Elven Woods (rooms 24800-24899).
Jan 26 21:34:14 2026 :: Resetting #249: Jedi Clan House (rooms 24900-24999).
Jan 26 21:34:14 2026 :: Resetting #250: DragonSpyre (rooms 25000-25099).
Jan 26 21:34:14 2026 :: Resetting #251: Ape Village (rooms 25100-25199).
Jan 26 21:34:14 2026 :: Resetting #252: Castle of the Vampyre (rooms 25200-25299).
Jan 26 21:34:14 2026 :: Resetting #253: Windmill (rooms 25300-25399).
Jan 26 21:34:14 2026 :: Resetting #254: Mordecai's Village (rooms 25400-25499).
Jan 26 21:34:14 2026 :: Resetting #255: Shipwreck (rooms 25500-25599).
Jan 26 21:34:14 2026 :: Resetting #256: Lord's Keep (rooms 25600-25699).
Jan 26 21:34:14 2026 :: Resetting #257: Jareth Main City (rooms 25700-25799).
Jan 26 21:34:14 2026 :: Resetting #258: Light Forest (rooms 25800-25899).
Jan 26 21:34:14 2026 :: Resetting #259: Haunted Mansion (rooms 25900-25999).
Jan 26 21:34:14 2026 :: Resetting #260: Grasslands (rooms 26000-26099).
Jan 26 21:34:14 2026 :: Resetting #261: Inna & Igor's Castle (rooms 26100-26199).
Jan 26 21:34:14 2026 :: Resetting #262: Forest Trails (rooms 26200-26299).
Jan 26 21:34:14 2026 :: Resetting #263: Farmlands (rooms 26300-26399).
Jan 26 21:34:14 2026 :: Resetting #264: Banshide (rooms 26400-26499).
Jan 26 21:34:14 2026 :: Resetting #265: Beach & Lighthouse (rooms 26500-26599).
Jan 26 21:34:14 2026 :: Resetting #266: Realm of Lord Ankou (rooms 26600-26699).
Jan 26 21:34:14 2026 :: Resetting #267: Vice Island (rooms 26700-26799).
Jan 26 21:34:14 2026 :: Resetting #268: Vice Island II (rooms 26800-26899).
Jan 26 21:34:14 2026 :: Resetting #269: Southern Desert (rooms 26900-26999).
Jan 26 21:34:14 2026 :: Resetting #270: Wasteland (rooms 27000-27099).
Jan 26 21:34:14 2026 :: Resetting #271: Sundhaven (rooms 27100-27199).
Jan 26 21:34:14 2026 :: Resetting #272: Sundhaven II (rooms 27200-27299).
Jan 26 21:34:14 2026 :: Resetting #273: Space Station Alpha (rooms 27300-27399).
Jan 26 21:34:14 2026 :: Resetting #274: Adria: Saint Brigid (rooms 27400-27499).
Jan 26 21:34:14 2026 :: Resetting #275: New Sparta (rooms 27500-27599).
Jan 26 21:34:14 2026 :: Resetting #276: New Sparta II (rooms 27600-27699).
Jan 26 21:34:14 2026 :: Resetting #277: Shire (rooms 27700-27799).
Jan 26 21:34:14 2026 :: Resetting #278: Oceania (rooms 27800-27899).
Jan 26 21:34:14 2026 :: Resetting #279: Notre Dame (rooms 27900-27999).
Jan 26 21:34:14 2026 :: Resetting #280: Living Motherboard (rooms 28000-28099).
Jan 26 21:34:14 2026 :: Resetting #281: Forest of Khanjar (rooms 28100-28199).
Jan 26 21:34:14 2026 :: Resetting #282: Infernal Pit of Kerjim (rooms 28200-28299).
Jan 26 21:34:14 2026 :: Resetting #283: Haunted House (rooms 28300-28399).
Jan 26 21:34:14 2026 :: Resetting #284: Ghenna (rooms 28400-28499).
Jan 26 21:34:14 2026 :: Resetting #285: Descent to Hell II (rooms 28500-28599).
Jan 26 21:34:14 2026 :: Resetting #286: Descent to Hell (rooms 28600-28699).
Jan 26 21:34:14 2026 :: Resetting #287: Ofingia and the Goblin Town (rooms 28700-28799).
Jan 26 21:34:14 2026 :: Resetting #288: Galaxy (rooms 28800-28899).
Jan 26 21:34:14 2026 :: Resetting #289: Werith's Wayhouse (rooms 28900-28999).
Jan 26 21:34:14 2026 :: Resetting #290: Lizard Lair Safari (rooms 29000-29099).
Jan 26 21:34:14 2026 :: Resetting #291: Black Forest (rooms 29100-29199).
Jan 26 21:34:14 2026 :: Resetting #292: Kerofk (rooms 29200-29299).
Jan 26 21:34:14 2026 :: Resetting #293: Kerofk II (rooms 29300-29399).
Jan 26 21:34:14 2026 :: Resetting #294: Trade Road (rooms 29400-29499).
Jan 26 21:34:14 2026 :: Resetting #295: Jungle (rooms 29500-29599).
Jan 26 21:34:14 2026 :: Resetting #296: Froboz Fun Factory (rooms 29600-29699).
Jan 26 21:34:14 2026 :: Resetting #298: Castle of Desire (rooms 29800-29899).
Jan 26 21:34:14 2026 :: Resetting #299: Abandoned Cathedral (rooms 29900-29999).
Jan 26 21:34:14 2026 :: Resetting #300: Ancalador (rooms 30000-30099).
Jan 26 21:34:14 2026 :: Resetting #301: Campus (rooms 30100-30199).
Jan 26 21:34:14 2026 :: Resetting #302: Campus II (rooms 30200-30299).
Jan 26 21:34:14 2026 :: Resetting #303: Campus III (rooms 30300-30399).
Jan 26 21:34:14 2026 :: Resetting #304: Temple of the Bull (rooms 30400-30499).
Jan 26 21:34:14 2026 :: Resetting #305: Chessboard (rooms 30500-30599).
Jan 26 21:34:14 2026 :: Resetting #306: Newbie Tree (rooms 30600-30699).
Jan 26 21:34:14 2026 :: Resetting #307: Castle (rooms 30700-30799).
Jan 26 21:34:14 2026 :: Resetting #308: Baron Cailveh (rooms 30800-30899).
Jan 26 21:34:14 2026 :: Resetting #309: Keep of Baron Westlawn (rooms 30900-30999).
Jan 26 21:34:14 2026 :: Resetting #310: Graye Area (rooms 31000-31099).
Jan 26 21:34:14 2026 :: Resetting #311: The Dragon's Teeth (rooms 31100-31199).
Jan 26 21:34:14 2026 :: Resetting #312: Leper Island (rooms 31200-31299).
Jan 26 21:34:14 2026 :: Resetting #313: Farmlands of Ofingia (rooms 31300-31399).
Jan 26 21:34:14 2026 :: Resetting #314: X'Raantra's Altar of Sacrifice (rooms 31400-31499).
Jan 26 21:34:14 2026 :: Resetting #315: McGintey Business District (rooms 31500-31599).
Jan 26 21:34:14 2026 :: Resetting #316: McGintey Guild Area (rooms 31600-31699).
Jan 26 21:34:14 2026 :: Resetting #317: Wharf (rooms 31700-31799).
Jan 26 21:34:14 2026 :: Resetting #318: Dock Area (rooms 31800-31899).
Jan 26 21:34:14 2026 :: Resetting #319: Yllythad Sea (rooms 31900-31999).
Jan 26 21:34:14 2026 :: Resetting #320: Yllythad Sea II (rooms 32000-32099).
Jan 26 21:34:14 2026 :: Resetting #321: Yllythad Sea III (rooms 32100-32199).
Jan 26 21:34:14 2026 :: Resetting #322: McGintey Bay (rooms 32200-32299).
Jan 26 21:34:14 2026 :: Resetting #323: Caverns of the Pale Man (rooms 32300-32399).
Jan 26 21:34:14 2026 :: Resetting #324: Army Encampment (rooms 32400-32499).
Jan 26 21:34:14 2026 :: Resetting #325: Revelry (rooms 32500-32599).
Jan 26 21:34:14 2026 :: Resetting #326: Army Perimeter (rooms 32600-32699).
Jan 26 21:34:14 2026 :: Resetting #343: God Complex (rooms 34300-34399).
Jan 26 21:34:14 2026 :: Resetting #345: Asylum for the Insane (rooms 34500-34599).
Jan 26 21:34:14 2026 :: Resetting #346: God Hall Ext 346 for God Hall Cmplx (rooms 34600-34699).
Jan 26 21:34:14 2026 :: Resetting #491: Grenzland Building (rooms 49100-49199).
Jan 26 21:34:14 2026 :: Resetting #492: The Library Maze (rooms 49200-49299).
Jan 26 21:34:14 2026 :: Resetting #555: Ultima (rooms 55500-55599).
Jan 26 21:34:14 2026 :: Resetting #556: Ultima II (rooms 55600-55699).
Jan 26 21:34:14 2026 :: Resetting #653: Apartment (rooms 65300-65399).
Jan 26 21:34:14 2026 :: Resetting #654: Subdivision (rooms 65400-65499).
Jan 26 21:34:14 2026 :: Boot db -- DONE.
Jan 26 21:34:14 2026 :: Signal trapping.
Jan 26 21:34:14 2026 :: Entering game loop.
Jan 26 21:34:14 2026 :: No connections. Going to sleep.
Jan 26 21:34:42 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
Quick boot mode -- rent check supressed.
Using file descriptor for logging.
Improper shutdown of autorun detected, rotating syslogs before startup.

16
log/syslog.2 Normal file
View File

@@ -0,0 +1,16 @@
autorun starting game Mo 26. Jan 21:25:55 CET 2026
running bin/circle -q 4000
nohup: Eingabe wird ignoriert
No etc/config file, using defaults: No such file or directory
Jan 26 21:25:55 2026 :: Loading configuration.
Jan 26 21:25:55 2026 :: tbaMUD 2025
Jan 26 21:25:55 2026 :: Using lib as data directory.
Jan 26 21:25:55 2026 :: Running game on port 4000.
Jan 26 21:25:55 2026 :: Finding player limit.
Jan 26 21:25:55 2026 :: Setting player limit to 300 using rlimit.
Jan 26 21:25:55 2026 :: Opening mother connection.
Jan 26 21:25:55 2026 :: Binding to all IP interfaces on this host.
SYSERR: bind: Address already in use
Quick boot mode -- rent check supressed.
Using file descriptor for logging.
autoscript terminated Mo 26. Jan 21:25:55 CET 2026

269
log/syslog.4 Normal file
View File

@@ -0,0 +1,269 @@
autorun starting game Mo 26. Jan 21:34:49 CET 2026
running bin/circle -q 4000
nohup: Eingabe wird ignoriert
No etc/config file, using defaults: No such file or directory
Jan 26 21:34:49 2026 :: Loading configuration.
Jan 26 21:34:49 2026 :: tbaMUD 2025
Jan 26 21:34:49 2026 :: Using lib as data directory.
Jan 26 21:34:49 2026 :: Running game on port 4000.
Jan 26 21:34:49 2026 :: Finding player limit.
Jan 26 21:34:49 2026 :: Setting player limit to 300 using rlimit.
Jan 26 21:34:49 2026 :: Opening mother connection.
Jan 26 21:34:49 2026 :: Binding to all IP interfaces on this host.
Jan 26 21:34:49 2026 :: Boot db -- BEGIN.
Jan 26 21:34:49 2026 :: Resetting the game time:
Jan 26 21:34:49 2026 :: No time file 'etc/time' starting from the beginning.
Jan 26 21:34:49 2026 :: Current Gametime: 23H 29D 15M 1044Y.
Jan 26 21:34:49 2026 :: Initialize Global Lists
Jan 26 21:34:49 2026 :: Initializing Events
Jan 26 21:34:49 2026 :: Reading news, credits, help, ihelp, bground, info & motds.
Jan 26 21:34:49 2026 :: Loading spell definitions.
Jan 26 21:34:49 2026 :: Loading zone table.
Jan 26 21:34:49 2026 :: 192 zones, 13824 bytes.
Jan 26 21:34:49 2026 :: Loading triggers and generating index.
Jan 26 21:34:49 2026 :: Loading rooms.
Jan 26 21:34:49 2026 :: 12758 rooms, 2347472 bytes.
Jan 26 21:34:49 2026 :: Renumbering rooms.
Jan 26 21:34:49 2026 :: Checking start rooms.
Jan 26 21:34:49 2026 :: Loading mobs and generating index.
Jan 26 21:34:49 2026 :: 3712 mobs, 118784 bytes in index, 2138112 bytes in prototypes.
Jan 26 21:34:49 2026 :: Loading objs and generating index.
Jan 26 21:34:49 2026 :: 4774 objs, 152768 bytes in index, 1145760 bytes in prototypes.
Jan 26 21:34:49 2026 :: Renumbering zone table.
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4900, cmd disabled
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 5
Jan 26 21:34:49 2026 :: SYSERR: zone file: Invalid vnum 4901, cmd disabled
Jan 26 21:34:49 2026 :: SYSERR: ...offending cmd: 'M' cmd in zone #491, line 10
Jan 26 21:34:49 2026 :: Loading shops.
Jan 26 21:34:49 2026 :: Loading quests.
Jan 26 21:34:49 2026 :: 1 entries, 128 bytes.
Jan 26 21:34:49 2026 :: Loading help entries.
Jan 26 21:34:49 2026 :: 2640 entries, 84480 bytes.
Jan 26 21:34:49 2026 :: Generating player index.
Jan 26 21:34:49 2026 :: Loading fight messages.
Jan 26 21:34:49 2026 :: Loaded 37 Combat Messages...
Jan 26 21:34:49 2026 :: Loading social messages.
Jan 26 21:34:49 2026 :: Social table contains 490 socials.
Jan 26 21:34:49 2026 :: Building command list.
Jan 26 21:34:49 2026 :: Command info rebuilt, 766 total commands.
Jan 26 21:34:49 2026 :: Assigning function pointers:
Jan 26 21:34:49 2026 :: Mobiles.
Jan 26 21:34:49 2026 :: Shopkeepers.
Jan 26 21:34:49 2026 :: Objects.
Jan 26 21:34:49 2026 :: Rooms.
Jan 26 21:34:49 2026 :: Questmasters.
Jan 26 21:34:49 2026 :: Assigning spell and skill levels.
Jan 26 21:34:49 2026 :: Sorting command list and spells.
Jan 26 21:34:49 2026 :: Booting mail system.
Jan 26 21:34:49 2026 :: Mail file read -- 0 messages.
Jan 26 21:34:49 2026 :: Reading banned site and invalid-name list.
Jan 26 21:34:49 2026 :: Loading Ideas.
Jan 26 21:34:49 2026 :: Loading Bugs.
Jan 26 21:34:49 2026 :: Loading Typos.
Jan 26 21:34:49 2026 :: Booting houses.
Jan 26 21:34:49 2026 :: No houses to load. File 'etc/hcontrol' does not exist.
Jan 26 21:34:49 2026 :: Cleaning up last log.
Jan 26 21:34:49 2026 :: Resetting #0: The Builder Academy Zone (rooms 0-99).
Jan 26 21:34:49 2026 :: Resetting #1: Sanctus (rooms 100-199).
Jan 26 21:34:49 2026 :: Resetting #2: Sanctus II (rooms 200-299).
Jan 26 21:34:49 2026 :: Resetting #3: Sanctus III (rooms 300-399).
Jan 26 21:34:49 2026 :: Resetting #4: Rename (rooms 400-499).
Jan 26 21:34:49 2026 :: Resetting #5: Newbie Farm (rooms 500-599).
Jan 26 21:34:49 2026 :: Resetting #6: Sea of Souls (rooms 600-699).
Jan 26 21:34:49 2026 :: Resetting #7: Camelot (rooms 700-799).
Jan 26 21:34:49 2026 :: Resetting #9: River Island of Minos (rooms 900-999).
Jan 26 21:34:49 2026 :: Resetting #11: Frozen Castle (rooms 1100-1199).
Jan 26 21:34:49 2026 :: Resetting #12: God Complex Merged with 343 (rooms 1200-1299).
Jan 26 21:34:49 2026 :: Resetting #13: TBA Examples (rooms 1300-1399).
Jan 26 21:34:49 2026 :: Resetting #14: TBA Examples II (rooms 1400-1499).
Jan 26 21:34:49 2026 :: Resetting #15: Straight Path (rooms 1500-1599).
Jan 26 21:34:49 2026 :: Resetting #16: Camelot II (rooms 1600-1699).
Jan 26 21:34:49 2026 :: Resetting #17: Camelot III (rooms 1700-1799).
Jan 26 21:34:49 2026 :: Resetting #18: Nuclear Wasteland (rooms 1800-1899).
Jan 26 21:34:49 2026 :: Resetting #19: Spider Swamp (rooms 1900-1999).
Jan 26 21:34:49 2026 :: Resetting #20: Arena (rooms 2000-2099).
Jan 26 21:34:49 2026 :: Resetting #22: Tower of the Undead (rooms 2200-2299).
Jan 26 21:34:49 2026 :: Resetting #25: High Tower of Magic (rooms 2500-2599).
Jan 26 21:34:49 2026 :: Resetting #26: High Tower of Magic II (rooms 2600-2699).
Jan 26 21:34:49 2026 :: Resetting #27: Memlin Caverns (rooms 2700-2799).
Jan 26 21:34:49 2026 :: Resetting #28: Mudschool (rooms 2800-2899).
Jan 26 21:34:49 2026 :: Resetting #30: Northern Midgaard (rooms 3000-3099).
Jan 26 21:34:49 2026 :: Resetting #31: Southern Midgaard (rooms 3100-3199).
Jan 26 21:34:49 2026 :: Resetting #32: Midgaard (rooms 3200-3299).
Jan 26 21:34:49 2026 :: Resetting #33: Three of Swords (rooms 3300-3399).
Jan 26 21:34:49 2026 :: Resetting #35: Miden'Nir (rooms 3500-3599).
Jan 26 21:34:49 2026 :: Resetting #36: Chessboard of Midgaard (rooms 3600-3699).
Jan 26 21:34:49 2026 :: Resetting #37: Capital Sewer System (rooms 3700-3799).
Jan 26 21:34:49 2026 :: Resetting #38: Capital Sewer System II (rooms 3800-3899).
Jan 26 21:34:49 2026 :: Resetting #39: Haven (rooms 3900-3999).
Jan 26 21:34:49 2026 :: Resetting #40: Mines of Moria (rooms 4000-4099).
Jan 26 21:34:49 2026 :: Resetting #41: Mines of Moria (rooms 4100-4199).
Jan 26 21:34:49 2026 :: Resetting #42: Dragon Chasm (rooms 4200-4299).
Jan 26 21:34:49 2026 :: Resetting #43: Arctic Zone (rooms 4300-4399).
Jan 26 21:34:49 2026 :: Resetting #44: Orc Camp (rooms 4400-4499).
Jan 26 21:34:49 2026 :: Resetting #45: Woodland Monastery (rooms 4500-4599).
Jan 26 21:34:49 2026 :: Resetting #46: Ant Hill (rooms 4600-4699).
Jan 26 21:34:49 2026 :: Resetting #49: Grenzland (rooms 4900-4999).
Jan 26 21:34:49 2026 :: Resetting #50: Great Eastern Desert (rooms 5000-5099).
Jan 26 21:34:49 2026 :: Resetting #51: Drow City (rooms 5100-5199).
Jan 26 21:34:49 2026 :: Resetting #52: City of Thalos (rooms 5200-5299).
Jan 26 21:34:49 2026 :: Resetting #53: Great Pyramid (rooms 5300-5399).
Jan 26 21:34:49 2026 :: Resetting #54: New Thalos (rooms 5400-5499).
Jan 26 21:34:49 2026 :: Resetting #55: New Thalos II (rooms 5500-5599).
Jan 26 21:34:49 2026 :: Resetting #56: New Thalos Wilderness (rooms 5600-5699).
Jan 26 21:34:49 2026 :: Resetting #57: Zodiac (rooms 5700-5799).
Jan 26 21:34:49 2026 :: Resetting #60: Haon-Dor, Light Forest (rooms 6000-6099).
Jan 26 21:34:49 2026 :: Resetting #61: Haon-Dor, Light Forest II (rooms 6100-6199).
Jan 26 21:34:49 2026 :: Resetting #62: Orc Enclave (rooms 6200-6299).
Jan 26 21:34:49 2026 :: Resetting #63: Arachnos (rooms 6300-6399).
Jan 26 21:34:49 2026 :: Resetting #64: Rand's Tower (rooms 6400-6499).
Jan 26 21:34:49 2026 :: Resetting #65: Dwarven Kingdom (rooms 6500-6599).
Jan 26 21:34:49 2026 :: Resetting #70: Sewer, First Level (rooms 7000-7099).
Jan 26 21:34:49 2026 :: Resetting #71: Second Sewer (rooms 7100-7199).
Jan 26 21:34:49 2026 :: Resetting #72: Sewer Maze (rooms 7200-7299).
Jan 26 21:34:49 2026 :: Resetting #73: Tunnels in the Sewer (rooms 7300-7399).
Jan 26 21:34:49 2026 :: Resetting #74: Newbie Graveyard (rooms 7400-7499).
Jan 26 21:34:49 2026 :: Resetting #75: Zamba (rooms 7500-7599).
Jan 26 21:34:49 2026 :: Resetting #78: Gideon (rooms 7800-7899).
Jan 26 21:34:49 2026 :: Resetting #79: Redferne's Residence (rooms 7900-7999).
Jan 26 21:34:49 2026 :: Resetting #83: Glumgold's Sea (rooms 8300-8399).
Jan 26 21:34:49 2026 :: Resetting #86: Duke Kalithorn's Keep (rooms 8600-8699).
Jan 26 21:34:49 2026 :: Resetting #90: Oasis (rooms 9000-9099).
Jan 26 21:34:49 2026 :: Resetting #96: Domiae (rooms 9600-9699).
Jan 26 21:34:49 2026 :: Resetting #100: Northern Highway (rooms 10000-10099).
Jan 26 21:34:49 2026 :: Resetting #101: South Road (rooms 10100-10199).
Jan 26 21:34:49 2026 :: Resetting #103: DBZ World (rooms 10300-10399).
Jan 26 21:34:49 2026 :: Resetting #104: Land of Orchan (rooms 10400-10499).
Jan 26 21:34:49 2026 :: Resetting #106: Elcardo (rooms 10600-10699).
Jan 26 21:34:49 2026 :: Resetting #107: Realms of Iuel (rooms 10700-10799).
Jan 26 21:34:49 2026 :: Resetting #115: Monestary Omega (rooms 11500-11599).
Jan 26 21:34:49 2026 :: Resetting #117: Los Torres (rooms 11700-11799).
Jan 26 21:34:49 2026 :: Resetting #118: The Dollhouse (rooms 11800-11899).
Jan 26 21:34:49 2026 :: Resetting #120: Rome (rooms 12000-12099).
Jan 26 21:34:49 2026 :: Resetting #125: Hannah (rooms 12500-12599).
Jan 26 21:34:49 2026 :: Resetting #130: Mist Maze (rooms 13000-13099).
Jan 26 21:34:49 2026 :: Resetting #140: Wyvern City (rooms 14000-14099).
Jan 26 21:34:49 2026 :: Resetting #150: King Welmar's Castle (rooms 15000-15099).
Jan 26 21:34:49 2026 :: Resetting #169: Gibberling Caves (rooms 16900-16999).
Jan 26 21:34:49 2026 :: Resetting #175: Cardinal Wizards (rooms 17500-17599).
Jan 26 21:34:49 2026 :: Resetting #186: Newbie Zone (rooms 18600-18699).
Jan 26 21:34:49 2026 :: Resetting #187: Circus (rooms 18700-18799).
Jan 26 21:34:49 2026 :: Resetting #200: Western Highway (rooms 20000-20099).
Jan 26 21:34:49 2026 :: Resetting #201: Sapphire Islands (rooms 20100-20199).
Jan 26 21:34:49 2026 :: Resetting #211: Tarot (rooms 21100-21199).
Jan 26 21:34:49 2026 :: Resetting #220: The Enchanted Kitchen (rooms 22000-22099).
Jan 26 21:34:49 2026 :: Resetting #232: Terringham (rooms 23200-23299).
Jan 26 21:34:49 2026 :: Resetting #233: Dragon Plains (rooms 23300-23399).
Jan 26 21:34:49 2026 :: Resetting #234: Newbie School (rooms 23400-23499).
Jan 26 21:34:49 2026 :: Resetting #235: Dwarven Mines (rooms 23500-23599).
Jan 26 21:34:49 2026 :: Resetting #236: Aldin (rooms 23600-23699).
Jan 26 21:34:49 2026 :: Resetting #237: Dwarven Trade Route (rooms 23700-23799).
Jan 26 21:34:49 2026 :: Resetting #238: Crystal Castle (rooms 23800-23899).
Jan 26 21:34:49 2026 :: Resetting #239: South Pass (rooms 23900-23999).
Jan 26 21:34:49 2026 :: Resetting #240: Dun Maura (rooms 24000-24099).
Jan 26 21:34:49 2026 :: Resetting #241: Starship Enterprise (rooms 24100-24199).
Jan 26 21:34:49 2026 :: Resetting #242: New Southern Midgaard (rooms 24200-24299).
Jan 26 21:34:49 2026 :: Resetting #243: Snowy Valley (rooms 24300-24399).
Jan 26 21:34:49 2026 :: Resetting #244: Cooland Prison (rooms 24400-24499).
Jan 26 21:34:49 2026 :: Resetting #245: The Nether (rooms 24500-24599).
Jan 26 21:34:49 2026 :: Resetting #246: The Nether II (rooms 24600-24699).
Jan 26 21:34:49 2026 :: Resetting #247: Graveyard (rooms 24700-24799).
Jan 26 21:34:49 2026 :: Resetting #248: Elven Woods (rooms 24800-24899).
Jan 26 21:34:49 2026 :: Resetting #249: Jedi Clan House (rooms 24900-24999).
Jan 26 21:34:49 2026 :: Resetting #250: DragonSpyre (rooms 25000-25099).
Jan 26 21:34:49 2026 :: Resetting #251: Ape Village (rooms 25100-25199).
Jan 26 21:34:49 2026 :: Resetting #252: Castle of the Vampyre (rooms 25200-25299).
Jan 26 21:34:49 2026 :: Resetting #253: Windmill (rooms 25300-25399).
Jan 26 21:34:49 2026 :: Resetting #254: Mordecai's Village (rooms 25400-25499).
Jan 26 21:34:49 2026 :: Resetting #255: Shipwreck (rooms 25500-25599).
Jan 26 21:34:49 2026 :: Resetting #256: Lord's Keep (rooms 25600-25699).
Jan 26 21:34:49 2026 :: Resetting #257: Jareth Main City (rooms 25700-25799).
Jan 26 21:34:49 2026 :: Resetting #258: Light Forest (rooms 25800-25899).
Jan 26 21:34:49 2026 :: Resetting #259: Haunted Mansion (rooms 25900-25999).
Jan 26 21:34:49 2026 :: Resetting #260: Grasslands (rooms 26000-26099).
Jan 26 21:34:49 2026 :: Resetting #261: Inna & Igor's Castle (rooms 26100-26199).
Jan 26 21:34:49 2026 :: Resetting #262: Forest Trails (rooms 26200-26299).
Jan 26 21:34:49 2026 :: Resetting #263: Farmlands (rooms 26300-26399).
Jan 26 21:34:49 2026 :: Resetting #264: Banshide (rooms 26400-26499).
Jan 26 21:34:49 2026 :: Resetting #265: Beach & Lighthouse (rooms 26500-26599).
Jan 26 21:34:49 2026 :: Resetting #266: Realm of Lord Ankou (rooms 26600-26699).
Jan 26 21:34:49 2026 :: Resetting #267: Vice Island (rooms 26700-26799).
Jan 26 21:34:49 2026 :: Resetting #268: Vice Island II (rooms 26800-26899).
Jan 26 21:34:49 2026 :: Resetting #269: Southern Desert (rooms 26900-26999).
Jan 26 21:34:49 2026 :: Resetting #270: Wasteland (rooms 27000-27099).
Jan 26 21:34:49 2026 :: Resetting #271: Sundhaven (rooms 27100-27199).
Jan 26 21:34:49 2026 :: Resetting #272: Sundhaven II (rooms 27200-27299).
Jan 26 21:34:49 2026 :: Resetting #273: Space Station Alpha (rooms 27300-27399).
Jan 26 21:34:49 2026 :: Resetting #274: Adria: Saint Brigid (rooms 27400-27499).
Jan 26 21:34:49 2026 :: Resetting #275: New Sparta (rooms 27500-27599).
Jan 26 21:34:49 2026 :: Resetting #276: New Sparta II (rooms 27600-27699).
Jan 26 21:34:49 2026 :: Resetting #277: Shire (rooms 27700-27799).
Jan 26 21:34:49 2026 :: Resetting #278: Oceania (rooms 27800-27899).
Jan 26 21:34:49 2026 :: Resetting #279: Notre Dame (rooms 27900-27999).
Jan 26 21:34:49 2026 :: Resetting #280: Living Motherboard (rooms 28000-28099).
Jan 26 21:34:49 2026 :: Resetting #281: Forest of Khanjar (rooms 28100-28199).
Jan 26 21:34:49 2026 :: Resetting #282: Infernal Pit of Kerjim (rooms 28200-28299).
Jan 26 21:34:49 2026 :: Resetting #283: Haunted House (rooms 28300-28399).
Jan 26 21:34:49 2026 :: Resetting #284: Ghenna (rooms 28400-28499).
Jan 26 21:34:49 2026 :: Resetting #285: Descent to Hell II (rooms 28500-28599).
Jan 26 21:34:49 2026 :: Resetting #286: Descent to Hell (rooms 28600-28699).
Jan 26 21:34:49 2026 :: Resetting #287: Ofingia and the Goblin Town (rooms 28700-28799).
Jan 26 21:34:49 2026 :: Resetting #288: Galaxy (rooms 28800-28899).
Jan 26 21:34:49 2026 :: Resetting #289: Werith's Wayhouse (rooms 28900-28999).
Jan 26 21:34:49 2026 :: Resetting #290: Lizard Lair Safari (rooms 29000-29099).
Jan 26 21:34:49 2026 :: Resetting #291: Black Forest (rooms 29100-29199).
Jan 26 21:34:49 2026 :: Resetting #292: Kerofk (rooms 29200-29299).
Jan 26 21:34:49 2026 :: Resetting #293: Kerofk II (rooms 29300-29399).
Jan 26 21:34:49 2026 :: Resetting #294: Trade Road (rooms 29400-29499).
Jan 26 21:34:49 2026 :: Resetting #295: Jungle (rooms 29500-29599).
Jan 26 21:34:49 2026 :: Resetting #296: Froboz Fun Factory (rooms 29600-29699).
Jan 26 21:34:49 2026 :: Resetting #298: Castle of Desire (rooms 29800-29899).
Jan 26 21:34:49 2026 :: Resetting #299: Abandoned Cathedral (rooms 29900-29999).
Jan 26 21:34:49 2026 :: Resetting #300: Ancalador (rooms 30000-30099).
Jan 26 21:34:49 2026 :: Resetting #301: Campus (rooms 30100-30199).
Jan 26 21:34:49 2026 :: Resetting #302: Campus II (rooms 30200-30299).
Jan 26 21:34:49 2026 :: Resetting #303: Campus III (rooms 30300-30399).
Jan 26 21:34:49 2026 :: Resetting #304: Temple of the Bull (rooms 30400-30499).
Jan 26 21:34:49 2026 :: Resetting #305: Chessboard (rooms 30500-30599).
Jan 26 21:34:49 2026 :: Resetting #306: Newbie Tree (rooms 30600-30699).
Jan 26 21:34:49 2026 :: Resetting #307: Castle (rooms 30700-30799).
Jan 26 21:34:49 2026 :: Resetting #308: Baron Cailveh (rooms 30800-30899).
Jan 26 21:34:49 2026 :: Resetting #309: Keep of Baron Westlawn (rooms 30900-30999).
Jan 26 21:34:49 2026 :: Resetting #310: Graye Area (rooms 31000-31099).
Jan 26 21:34:49 2026 :: Resetting #311: The Dragon's Teeth (rooms 31100-31199).
Jan 26 21:34:49 2026 :: Resetting #312: Leper Island (rooms 31200-31299).
Jan 26 21:34:49 2026 :: Resetting #313: Farmlands of Ofingia (rooms 31300-31399).
Jan 26 21:34:49 2026 :: Resetting #314: X'Raantra's Altar of Sacrifice (rooms 31400-31499).
Jan 26 21:34:49 2026 :: Resetting #315: McGintey Business District (rooms 31500-31599).
Jan 26 21:34:49 2026 :: Resetting #316: McGintey Guild Area (rooms 31600-31699).
Jan 26 21:34:49 2026 :: Resetting #317: Wharf (rooms 31700-31799).
Jan 26 21:34:49 2026 :: Resetting #318: Dock Area (rooms 31800-31899).
Jan 26 21:34:49 2026 :: Resetting #319: Yllythad Sea (rooms 31900-31999).
Jan 26 21:34:49 2026 :: Resetting #320: Yllythad Sea II (rooms 32000-32099).
Jan 26 21:34:49 2026 :: Resetting #321: Yllythad Sea III (rooms 32100-32199).
Jan 26 21:34:49 2026 :: Resetting #322: McGintey Bay (rooms 32200-32299).
Jan 26 21:34:49 2026 :: Resetting #323: Caverns of the Pale Man (rooms 32300-32399).
Jan 26 21:34:49 2026 :: Resetting #324: Army Encampment (rooms 32400-32499).
Jan 26 21:34:49 2026 :: Resetting #325: Revelry (rooms 32500-32599).
Jan 26 21:34:49 2026 :: Resetting #326: Army Perimeter (rooms 32600-32699).
Jan 26 21:34:49 2026 :: Resetting #343: God Complex (rooms 34300-34399).
Jan 26 21:34:49 2026 :: Resetting #345: Asylum for the Insane (rooms 34500-34599).
Jan 26 21:34:49 2026 :: Resetting #346: God Hall Ext 346 for God Hall Cmplx (rooms 34600-34699).
Jan 26 21:34:49 2026 :: Resetting #491: Grenzland Building (rooms 49100-49199).
Jan 26 21:34:49 2026 :: Resetting #492: The Library Maze (rooms 49200-49299).
Jan 26 21:34:49 2026 :: Resetting #555: Ultima (rooms 55500-55599).
Jan 26 21:34:49 2026 :: Resetting #556: Ultima II (rooms 55600-55699).
Jan 26 21:34:49 2026 :: Resetting #653: Apartment (rooms 65300-65399).
Jan 26 21:34:49 2026 :: Resetting #654: Subdivision (rooms 65400-65499).
Jan 26 21:34:49 2026 :: Boot db -- DONE.
Jan 26 21:34:49 2026 :: Signal trapping.
Jan 26 21:34:49 2026 :: Entering game loop.
Jan 26 21:34:49 2026 :: No connections. Going to sleep.
Jan 26 21:36:26 2026 :: New connection. Waking up.
Jan 26 21:36:53 2026 :: Karrn [localhost] new player.
Jan 26 21:37:11 2026 :: Karrn had no variable file
Jan 26 21:37:11 2026 :: Karrn entering game with no equipment.
Jan 26 21:38:19 2026 :: SYSERR: Received SIGHUP, SIGINT, or SIGTERM. Shutting down...
Quick boot mode -- rent check supressed.
Using file descriptor for logging.
Improper shutdown of autorun detected, rotating syslogs before startup.

2
log/trigger Normal file
View File

@@ -0,0 +1,2 @@
Jan 26 21:34:13 2026 :: Loading triggers and generating index.
Jan 26 21:34:49 2026 :: Loading triggers and generating index.

0
log/usage Normal file
View File

View File

@@ -45,7 +45,7 @@ ACMD(do_say)
send_to_char(ch, "Yes, but WHAT do you want to say?\r\n"); send_to_char(ch, "Yes, but WHAT do you want to say?\r\n");
else { else {
char buf[MAX_INPUT_LENGTH + 14], *msg; char buf[MAX_INPUT_LENGTH + 14], *msg;
char_data *vict; struct char_data *vict;
if (CONFIG_SPECIAL_IN_COMM && legal_communication(argument)) if (CONFIG_SPECIAL_IN_COMM && legal_communication(argument))
parse_at(argument); parse_at(argument);
@@ -86,8 +86,7 @@ ACMD(do_gsay)
if (CONFIG_SPECIAL_IN_COMM && legal_communication(argument)) if (CONFIG_SPECIAL_IN_COMM && legal_communication(argument))
parse_at(argument); parse_at(argument);
send_to_group(ch, ch->group, "%s%s%s says, '%s'%s\r\n", CCGRN(ch, C_NRM), CCGRN(ch, C_NRM), GET_NAME(ch), send_to_group(ch, ch->group, "%s%s%s says, '%s'%s\r\n", CCGRN(ch, C_NRM), CCGRN(ch, C_NRM), GET_NAME(ch), argument, CCNRM(ch, C_NRM));
argument, CCNRM(ch, C_NRM));
if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_NOREPEAT)) if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_NOREPEAT))
send_to_char(ch, "%s", CONFIG_OK); send_to_char(ch, "%s", CONFIG_OK);
@@ -96,7 +95,7 @@ ACMD(do_gsay)
} }
} }
static void perform_tell(char_data *ch, char_data *vict, char *arg) static void perform_tell(struct char_data *ch, struct char_data *vict, char *arg)
{ {
char buf[MAX_STRING_LENGTH], *msg; char buf[MAX_STRING_LENGTH], *msg;
@@ -116,7 +115,7 @@ static void perform_tell(char_data *ch, char_data *vict, char *arg)
GET_LAST_TELL(vict) = GET_IDNUM(ch); GET_LAST_TELL(vict) = GET_IDNUM(ch);
} }
static int is_tell_ok(char_data *ch, char_data *vict) static int is_tell_ok(struct char_data *ch, struct char_data *vict)
{ {
if (!ch) if (!ch)
log("SYSERR: is_tell_ok called with no characters"); log("SYSERR: is_tell_ok called with no characters");
@@ -132,8 +131,7 @@ static int is_tell_ok(char_data *ch, char_data *vict)
act("$E's linkless at the moment.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP); act("$E's linkless at the moment.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP);
else if (PLR_FLAGGED(vict, PLR_WRITING)) else if (PLR_FLAGGED(vict, PLR_WRITING))
act("$E's writing a message right now; try again later.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP); act("$E's writing a message right now; try again later.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP);
else if ((!IS_NPC(vict) && PRF_FLAGGED(vict, PRF_NOTELL)) || ( else if ((!IS_NPC(vict) && PRF_FLAGGED(vict, PRF_NOTELL)) || (ROOM_FLAGGED(IN_ROOM(vict), ROOM_SOUNDPROOF) && (GET_LEVEL(ch) < LVL_GOD)))
ROOM_FLAGGED(IN_ROOM(vict), ROOM_SOUNDPROOF) && (GET_LEVEL(ch) < LVL_GOD)))
act("$E can't hear you.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP); act("$E can't hear you.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP);
else else
return (TRUE); return (TRUE);
@@ -145,7 +143,7 @@ static int is_tell_ok(char_data *ch, char_data *vict)
* called frequently, and should IMHO be kept as tight as possible. */ * called frequently, and should IMHO be kept as tight as possible. */
ACMD(do_tell) ACMD(do_tell)
{ {
char_data *vict = NULL; struct char_data *vict = NULL;
char buf[MAX_INPUT_LENGTH + 25], buf2[MAX_INPUT_LENGTH]; // +25 to make room for constants char buf[MAX_INPUT_LENGTH + 25], buf2[MAX_INPUT_LENGTH]; // +25 to make room for constants
half_chop(argument, buf, buf2); half_chop(argument, buf, buf2);
@@ -165,7 +163,7 @@ ACMD(do_tell)
ACMD(do_reply) ACMD(do_reply)
{ {
char_data *tch = character_list; struct char_data *tch = character_list;
if (IS_NPC(ch)) if (IS_NPC(ch))
return; return;
@@ -199,7 +197,7 @@ ACMD(do_reply)
ACMD(do_spec_comm) ACMD(do_spec_comm)
{ {
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
const char *action_sing, *action_plur, *action_others; const char *action_sing, *action_plur, *action_others;
switch (subcmd) { switch (subcmd) {
@@ -249,7 +247,7 @@ ACMD(do_spec_comm)
ACMD(do_write) ACMD(do_write)
{ {
obj_data *paper, *pen = NULL; struct obj_data *paper, *pen = NULL;
char *papername, *penname; char *papername, *penname;
char buf1[MAX_STRING_LENGTH], buf2[MAX_STRING_LENGTH]; char buf1[MAX_STRING_LENGTH], buf2[MAX_STRING_LENGTH];
@@ -328,8 +326,8 @@ ACMD(do_write)
ACMD(do_page) ACMD(do_page)
{ {
descriptor_data *d; struct descriptor_data *d;
char_data *vict; struct char_data *vict;
char buf2[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; char buf2[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH];
half_chop(argument, arg, buf2); half_chop(argument, arg, buf2);
@@ -365,7 +363,7 @@ ACMD(do_page)
/* Generalized communication function by Fred C. Merkel (Torg). */ /* Generalized communication function by Fred C. Merkel (Torg). */
ACMD(do_gen_comm) ACMD(do_gen_comm)
{ {
descriptor_data *i; struct descriptor_data *i;
char color_on[24]; char color_on[24];
char buf1[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH + 50], *msg; // + 50 to make room for color codes char buf1[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH + 50], *msg; // + 50 to make room for color codes
bool emoting = FALSE; bool emoting = FALSE;
@@ -394,42 +392,35 @@ ACMD(do_gen_comm)
* [2] message if you're not on the channel * [2] message if you're not on the channel
* [3] a color string. */ * [3] a color string. */
const char *com_msgs[][4] = { const char *com_msgs[][4] = {
{ {"You cannot holler!!\r\n",
"You cannot holler!!\r\n",
"holler", "holler",
"", "",
KYEL KYEL},
},
{ {"You cannot shout!!\r\n",
"You cannot shout!!\r\n",
"shout", "shout",
"Turn off your noshout flag first!\r\n", "Turn off your noshout flag first!\r\n",
KYEL KYEL},
},
{ {"You cannot gossip!!\r\n",
"You cannot gossip!!\r\n",
"gossip", "gossip",
"You aren't even on the channel!\r\n", "You aren't even on the channel!\r\n",
KYEL KYEL},
},
{ {"You cannot auction!!\r\n",
"You cannot auction!!\r\n",
"auction", "auction",
"You aren't even on the channel!\r\n", "You aren't even on the channel!\r\n",
KMAG KMAG},
},
{ {"You cannot congratulate!\r\n",
"You cannot congratulate!\r\n",
"congrat", "congrat",
"You aren't even on the channel!\r\n", "You aren't even on the channel!\r\n",
KGRN KGRN},
},
{ {"You cannot gossip your emotions!\r\n",
"You cannot gossip your emotions!\r\n",
"gossip", "gossip",
"You aren't even on the channel!\r\n", "You aren't even on the channel!\r\n",
KYEL KYEL}
}
}; };
if (PLR_FLAGGED(ch, PLR_NOSHOUT)) { if (PLR_FLAGGED(ch, PLR_NOSHOUT)) {
@@ -452,8 +443,7 @@ ACMD(do_gen_comm)
/* Level_can_shout defined in config.c. */ /* Level_can_shout defined in config.c. */
if (GET_LEVEL(ch) < CONFIG_LEVEL_CAN_SHOUT) { if (GET_LEVEL(ch) < CONFIG_LEVEL_CAN_SHOUT) {
send_to_char(ch, "You must be at least level %d before you can %s.\r\n", CONFIG_LEVEL_CAN_SHOUT, send_to_char(ch, "You must be at least level %d before you can %s.\r\n", CONFIG_LEVEL_CAN_SHOUT, com_msgs[subcmd][1]);
com_msgs[subcmd][1]);
return; return;
} }
/* Make sure the char is on the channel. */ /* Make sure the char is on the channel. */
@@ -528,7 +518,7 @@ ACMD(do_qcomm)
send_to_char(ch, "%c%s? Yes, fine, %s we must, but WHAT??\r\n", UPPER(*CMD_NAME), CMD_NAME + 1, CMD_NAME); send_to_char(ch, "%c%s? Yes, fine, %s we must, but WHAT??\r\n", UPPER(*CMD_NAME), CMD_NAME + 1, CMD_NAME);
else { else {
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
descriptor_data *i; struct descriptor_data *i;
if (CONFIG_SPECIAL_IN_COMM && legal_communication(argument)) if (CONFIG_SPECIAL_IN_COMM && legal_communication(argument))
parse_at(argument); parse_at(argument);

View File

@@ -57,7 +57,7 @@ char *find_exdesc(char *word, struct extra_descr_data *list);
void space_to_minus(char *str); void space_to_minus(char *str);
/** @todo Move to a help module? */ /** @todo Move to a help module? */
int search_help(const char *argument, int level); int search_help(const char *argument, int level);
void free_history(char_data *ch, int type); void free_history(struct char_data *ch, int type);
void free_recent_players(void); void free_recent_players(void);
/* functions with subcommands */ /* functions with subcommands */
/* do_commands */ /* do_commands */
@@ -109,10 +109,10 @@ ACMD(do_whois);
****************************************************************************/ ****************************************************************************/
/* Utility Functions */ /* Utility Functions */
/** @todo Compare with needs of find_eq_pos_script. */ /** @todo Compare with needs of find_eq_pos_script. */
int find_eq_pos(char_data *ch, obj_data *obj, char *arg); int find_eq_pos(struct char_data *ch, struct obj_data *obj, char *arg);
void name_from_drinkcon(obj_data *obj); void name_from_drinkcon(struct obj_data *obj);
void name_to_drinkcon(obj_data *obj, int type); void name_to_drinkcon(struct obj_data *obj, int type);
void weight_change_object(obj_data *obj, int weight); void weight_change_object(struct obj_data *obj, int weight);
/* functions with subcommands */ /* functions with subcommands */
/* do_drop */ /* do_drop */
ACMD(do_drop); ACMD(do_drop);
@@ -268,6 +268,7 @@ ACMD(do_action);
ACMD(do_gmote); ACMD(do_gmote);
/***************************************************************************** /*****************************************************************************
* Begin Functions and defines for act.wizard.c * Begin Functions and defines for act.wizard.c
****************************************************************************/ ****************************************************************************/
@@ -275,11 +276,11 @@ ACMD(do_gmote);
/** @todo should probably be moved to a more general file handler module */ /** @todo should probably be moved to a more general file handler module */
void clean_llog_entries(void); void clean_llog_entries(void);
/** @todo This should be moved to a more general utility file */ /** @todo This should be moved to a more general utility file */
int script_command_interpreter(char_data *ch, char *arg); int script_command_interpreter(struct char_data *ch, char *arg);
room_rnum find_target_room(char_data *ch, char *rawroomstr); room_rnum find_target_room(struct char_data *ch, char *rawroomstr);
void perform_immort_vis(char_data *ch); void perform_immort_vis(struct char_data *ch);
void snoop_check(char_data *ch); void snoop_check(struct char_data *ch);
bool change_player_name(char_data *ch, char_data *vict, char *new_name); bool change_player_name(struct char_data *ch, struct char_data *vict, char *new_name);
bool AddRecentPlayer(char *chname, char *chhost, bool newplr, bool cpyplr); bool AddRecentPlayer(char *chname, char *chhost, bool newplr, bool cpyplr);
/* Functions with subcommands */ /* Functions with subcommands */
/* do_date */ /* do_date */
@@ -326,7 +327,7 @@ ACMD(do_plist);
ACMD(do_purge); ACMD(do_purge);
ACMD(do_recent); ACMD(do_recent);
ACMD(do_restore); ACMD(do_restore);
void return_to_char(char_data *ch); void return_to_char(struct char_data * ch);
ACMD(do_return); ACMD(do_return);
ACMD(do_saveall); ACMD(do_saveall);
ACMD(do_send); ACMD(do_send);

View File

@@ -31,23 +31,23 @@
/* prototypes of local functions */ /* prototypes of local functions */
/* do_diagnose utility functions */ /* do_diagnose utility functions */
static void diag_char_to_char(char_data *i, char_data *ch); static void diag_char_to_char(struct char_data *i, struct char_data *ch);
/* do_look and do_examine utility functions */ /* do_look and do_examine utility functions */
static void do_auto_exits(char_data *ch); static void do_auto_exits(struct char_data *ch);
static void list_char_to_char(char_data *list, char_data *ch); static void list_char_to_char(struct char_data *list, struct char_data *ch);
static void list_one_char(char_data *i, char_data *ch); static void list_one_char(struct char_data *i, struct char_data *ch);
static void look_at_char(char_data *i, char_data *ch); static void look_at_char(struct char_data *i, struct char_data *ch);
static void look_at_target(char_data *ch, char *arg); static void look_at_target(struct char_data *ch, char *arg);
static void look_in_direction(char_data *ch, int dir); static void look_in_direction(struct char_data *ch, int dir);
static void look_in_obj(char_data *ch, char *arg); static void look_in_obj(struct char_data *ch, char *arg);
/* do_look, do_inventory utility functions */ /* do_look, do_inventory utility functions */
static void list_obj_to_char(obj_data *list, char_data *ch, int mode, int show); static void list_obj_to_char(struct obj_data *list, struct char_data *ch, int mode, int show);
/* do_look, do_equipment, do_examine, do_inventory */ /* do_look, do_equipment, do_examine, do_inventory */
static void show_obj_to_char(obj_data *obj, char_data *ch, int mode); static void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode);
static void show_obj_modifiers(obj_data *obj, char_data *ch); static void show_obj_modifiers(struct obj_data *obj, struct char_data *ch);
/* do_where utility functions */ /* do_where utility functions */
static void perform_immort_where(char_data *ch, const char *arg); static void perform_immort_where(char_data *ch, const char *arg);
static void perform_mortal_where(char_data *ch, char *arg); static void perform_mortal_where(struct char_data *ch, char *arg);
static size_t print_object_location(int num, const obj_data *obj, const char_data *ch, static size_t print_object_location(int num, const obj_data *obj, const char_data *ch,
char *buf, size_t len, size_t buf_size, int recur); char *buf, size_t len, size_t buf_size, int recur);
/* Subcommands */ /* Subcommands */
@@ -56,10 +56,10 @@ static size_t print_object_location(int num, const obj_data *obj, const char_dat
#define SHOW_OBJ_SHORT 1 #define SHOW_OBJ_SHORT 1
#define SHOW_OBJ_ACTION 2 #define SHOW_OBJ_ACTION 2
static void show_obj_to_char(obj_data *obj, char_data *ch, int mode) static void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode)
{ {
int found = 0; int found = 0;
char_data *temp; struct char_data *temp;
if (!obj || !ch) { if (!obj || !ch) {
log("SYSERR: NULL pointer in show_obj_to_char(): obj=%p ch=%p", (void *)obj, (void *)ch); log("SYSERR: NULL pointer in show_obj_to_char(): obj=%p ch=%p", (void *)obj, (void *)ch);
@@ -77,8 +77,8 @@ static void show_obj_to_char(obj_data *obj, char_data *ch, int mode)
found++; found++;
} }
if (found) { if (found) {
send_to_char(ch, "You are %s upon %s.", GET_POS(ch) == POS_SITTING ? "sitting" : "resting", send_to_char(ch, "You are %s upon %s.", GET_POS(ch) == POS_SITTING ? "sitting" :
obj->short_description); "resting", obj->short_description);
goto end; goto end;
} }
} }
@@ -153,7 +153,7 @@ end:
send_to_char(ch, "\r\n"); send_to_char(ch, "\r\n");
} }
static void show_obj_modifiers(obj_data *obj, char_data *ch) static void show_obj_modifiers(struct obj_data *obj, struct char_data *ch)
{ {
if (OBJ_FLAGGED(obj, ITEM_INVISIBLE)) if (OBJ_FLAGGED(obj, ITEM_INVISIBLE))
send_to_char(ch, " (invisible)"); send_to_char(ch, " (invisible)");
@@ -171,9 +171,9 @@ static void show_obj_modifiers(obj_data *obj, char_data *ch)
send_to_char(ch, " ..It emits a faint humming sound!"); send_to_char(ch, " ..It emits a faint humming sound!");
} }
static void list_obj_to_char(obj_data *list, char_data *ch, int mode, int show) static void list_obj_to_char(struct obj_data *list, struct char_data *ch, int mode, int show)
{ {
obj_data *i, *j, *display; struct obj_data *i, *j, *display;
bool found; bool found;
int num; int num;
@@ -219,10 +219,9 @@ static void list_obj_to_char(obj_data *list, char_data *ch, int mode, int show)
send_to_char(ch, " Nothing.\r\n"); send_to_char(ch, " Nothing.\r\n");
} }
static void diag_char_to_char(char_data *i, char_data *ch) static void diag_char_to_char(struct char_data *i, struct char_data *ch)
{
struct
{ {
struct {
byte percent; byte percent;
const char *text; const char *text;
} diagnosis[] = { } diagnosis[] = {
@@ -250,7 +249,7 @@ static void diag_char_to_char(char_data *i, char_data *ch)
send_to_char(ch, "%c%s %s\r\n", UPPER(*pers), pers + 1, diagnosis[ar_index].text); send_to_char(ch, "%c%s %s\r\n", UPPER(*pers), pers + 1, diagnosis[ar_index].text);
} }
static void look_at_char(char_data *i, char_data *ch) static void look_at_char(struct char_data *i, struct char_data *ch)
{ {
int j, found; int j, found;
@@ -284,9 +283,9 @@ static void look_at_char(char_data *i, char_data *ch)
} }
} }
static void list_one_char(char_data *i, char_data *ch) static void list_one_char(struct char_data *i, struct char_data *ch)
{ {
obj_data *furniture; struct obj_data *furniture;
const char *positions[] = { const char *positions[] = {
" is lying here, dead.", " is lying here, dead.",
" is lying here, mortally wounded.", " is lying here, mortally wounded.",
@@ -364,8 +363,8 @@ static void list_one_char(char_data *i, char_data *ch)
send_to_char(ch, "%s", positions[(int) GET_POS(i)]); send_to_char(ch, "%s", positions[(int) GET_POS(i)]);
else { else {
furniture = SITTING(i); furniture = SITTING(i);
send_to_char(ch, " is %s upon %s.", send_to_char(ch, " is %s upon %s.", (GET_POS(i) == POS_SLEEPING ?
(GET_POS(i) == POS_SLEEPING ? "sleeping" : (GET_POS(i) == POS_RESTING ? "resting" : "sitting")), "sleeping" : (GET_POS(i) == POS_RESTING ? "resting" : "sitting")),
OBJS(furniture, ch)); OBJS(furniture, ch));
} }
} else { } else {
@@ -395,9 +394,9 @@ static void list_one_char(char_data *i, char_data *ch)
act("...$e glows with a bright light!", FALSE, i, 0, ch, TO_VICT); act("...$e glows with a bright light!", FALSE, i, 0, ch, TO_VICT);
} }
static void list_char_to_char(char_data *list, char_data *ch) static void list_char_to_char(struct char_data *list, struct char_data *ch)
{ {
char_data *i; struct char_data *i;
for (i = list; i; i = i->next_in_room) for (i = list; i; i = i->next_in_room)
if (ch != i) { if (ch != i) {
@@ -415,7 +414,7 @@ static void list_char_to_char(char_data *list, char_data *ch)
} }
} }
static void do_auto_exits(char_data *ch) static void do_auto_exits(struct char_data *ch)
{ {
int door, slen = 0; int door, slen = 0;
@@ -429,8 +428,7 @@ static void do_auto_exits(char_data *ch)
if (EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) && !PRF_FLAGGED(ch, PRF_HOLYLIGHT)) if (EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) && !PRF_FLAGGED(ch, PRF_HOLYLIGHT))
continue; continue;
if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED)) if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED))
send_to_char(ch, "%s(%s)%s ", EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? CCWHT(ch, C_NRM) : CCRED(ch, C_NRM), send_to_char(ch, "%s(%s)%s ", EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? CCWHT(ch, C_NRM) : CCRED(ch, C_NRM), autoexits[door], CCCYN(ch, C_NRM));
autoexits[door], CCCYN(ch, C_NRM));
else if (EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN)) else if (EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN))
send_to_char(ch, "%s%s%s ", CCWHT(ch, C_NRM), autoexits[door], CCCYN(ch, C_NRM)); send_to_char(ch, "%s%s%s ", CCWHT(ch, C_NRM), autoexits[door], CCCYN(ch, C_NRM));
else else
@@ -445,14 +443,16 @@ ACMD(do_exits)
{ {
int door, len = 0; int door, len = 0;
if (AFF_FLAGGED(ch, AFF_BLIND) && GET_LEVEL(ch) < LVL_IMMORT) { if (AFF_FLAGGED(ch, AFF_BLIND) && GET_LEVEL(ch) < LVL_IMMORT)
{
send_to_char(ch, "You can't see a damned thing, you're blind!\r\n"); send_to_char(ch, "You can't see a damned thing, you're blind!\r\n");
return; return;
} }
send_to_char(ch, "Obvious exits:\r\n"); send_to_char(ch, "Obvious exits:\r\n");
for (door = 0; door < DIR_COUNT; door++) { for (door = 0; door < DIR_COUNT; door++)
{
if (!EXIT(ch, door) || EXIT(ch, door)->to_room == NOWHERE) if (!EXIT(ch, door) || EXIT(ch, door)->to_room == NOWHERE)
continue; continue;
if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED) && !CONFIG_DISP_CLOSED_DOORS) if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED) && !CONFIG_DISP_CLOSED_DOORS)
@@ -462,26 +462,29 @@ ACMD(do_exits)
len++; len++;
if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_SHOWVNUMS) && !EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED)) { if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_SHOWVNUMS) && !EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED))
{
send_to_char(ch, "%-5s -[%5d]%s %s\r\n", dirs[door], GET_ROOM_VNUM(EXIT(ch, door)->to_room), send_to_char(ch, "%-5s -[%5d]%s %s\r\n", dirs[door], GET_ROOM_VNUM(EXIT(ch, door)->to_room),
EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? "[HIDDEN]" : "", world[EXIT(ch, door)->to_room].name); EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? "[HIDDEN]" : "", world[EXIT(ch, door)->to_room].name);
} else if (CONFIG_DISP_CLOSED_DOORS && EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED)) { }
else if (CONFIG_DISP_CLOSED_DOORS && EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED))
{
/*But we tell them the door is closed */ /*But we tell them the door is closed */
send_to_char(ch, "%-5s - The %s is closed%s\r\n", dirs[door], send_to_char(ch, "%-5s - The %s is closed%s\r\n", dirs[door],
(EXIT(ch, door)->keyword) ? fname(EXIT(ch, door)->keyword) : "opening", (EXIT(ch, door)->keyword) ? fname(EXIT(ch, door)->keyword) : "opening",
EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? " and hidden." : "."); EXIT_FLAGGED(EXIT(ch, door), EX_HIDDEN) ? " and hidden." : ".");
} else { }
else
{
send_to_char(ch, "%-5s - %s\r\n", dirs[door], IS_DARK(EXIT(ch, door)->to_room) && send_to_char(ch, "%-5s - %s\r\n", dirs[door], IS_DARK(EXIT(ch, door)->to_room) &&
!CAN_SEE_IN_DARK(ch) !CAN_SEE_IN_DARK(ch) ? "Too dark to tell." : world[EXIT(ch, door)->to_room].name);
? "Too dark to tell."
: world[EXIT(ch, door)->to_room].name);
} }
} }
if (!len) if (!len)
send_to_char(ch, " None.\r\n"); send_to_char(ch, " None.\r\n");
} }
void look_at_room(char_data *ch, int ignore_brief) void look_at_room(struct char_data *ch, int ignore_brief)
{ {
trig_data * t; trig_data * t;
struct room_data *rm = &world[IN_ROOM(ch)]; struct room_data *rm = &world[IN_ROOM(ch)];
@@ -495,7 +498,8 @@ void look_at_room(char_data *ch, int ignore_brief)
if (IS_DARK(IN_ROOM(ch)) && !CAN_SEE_IN_DARK(ch)){ if (IS_DARK(IN_ROOM(ch)) && !CAN_SEE_IN_DARK(ch)){
send_to_char(ch, "It is pitch black...\r\n"); send_to_char(ch, "It is pitch black...\r\n");
return; return;
} else if (AFF_FLAGGED(ch, AFF_BLIND) && GET_LEVEL(ch) < LVL_IMMORT) { }
else if (AFF_FLAGGED(ch, AFF_BLIND) && GET_LEVEL(ch) < LVL_IMMORT) {
send_to_char(ch, "You see nothing but infinite darkness...\r\n"); send_to_char(ch, "You see nothing but infinite darkness...\r\n");
return; return;
} }
@@ -514,7 +518,8 @@ void look_at_room(char_data *ch, int ignore_brief)
send_to_char(ch, " %d", GET_TRIG_VNUM(t)); send_to_char(ch, " %d", GET_TRIG_VNUM(t));
send_to_char(ch, "]"); send_to_char(ch, "]");
} }
} else }
else
send_to_char(ch, "%s", world[IN_ROOM(ch)].name); send_to_char(ch, "%s", world[IN_ROOM(ch)].name);
send_to_char(ch, "%s\r\n", CCNRM(ch, C_NRM)); send_to_char(ch, "%s\r\n", CCNRM(ch, C_NRM));
@@ -537,7 +542,7 @@ void look_at_room(char_data *ch, int ignore_brief)
list_char_to_char(world[IN_ROOM(ch)].people, ch); list_char_to_char(world[IN_ROOM(ch)].people, ch);
} }
static void look_in_direction(char_data *ch, int dir) static void look_in_direction(struct char_data *ch, int dir)
{ {
if (EXIT(ch, dir)) { if (EXIT(ch, dir)) {
if (EXIT(ch, dir)->general_description) if (EXIT(ch, dir)->general_description)
@@ -553,10 +558,10 @@ static void look_in_direction(char_data *ch, int dir)
send_to_char(ch, "Nothing special there...\r\n"); send_to_char(ch, "Nothing special there...\r\n");
} }
static void look_in_obj(char_data *ch, char *arg) static void look_in_obj(struct char_data *ch, char *arg)
{ {
obj_data *obj = NULL; struct obj_data *obj = NULL;
char_data *dummy = NULL; struct char_data *dummy = NULL;
int amt, bits; int amt, bits;
if (!*arg) if (!*arg)
@@ -592,13 +597,16 @@ static void look_in_obj(char_data *ch, char *arg)
if ((GET_OBJ_VAL(obj, 1) == 0) && (GET_OBJ_VAL(obj, 0) != -1)) if ((GET_OBJ_VAL(obj, 1) == 0) && (GET_OBJ_VAL(obj, 0) != -1))
send_to_char(ch, "It is empty.\r\n"); send_to_char(ch, "It is empty.\r\n");
else { else {
if (GET_OBJ_VAL(obj, 0) < 0) { if (GET_OBJ_VAL(obj, 0) < 0)
{
char buf2[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH];
sprinttype(GET_OBJ_VAL(obj, 2), color_liquid, buf2, sizeof(buf2)); sprinttype(GET_OBJ_VAL(obj, 2), color_liquid, buf2, sizeof(buf2));
send_to_char(ch, "It's full of a %s liquid.\r\n", buf2); send_to_char(ch, "It's full of a %s liquid.\r\n", buf2);
} else if (GET_OBJ_VAL(obj, 1) > GET_OBJ_VAL(obj, 0)) }
else if (GET_OBJ_VAL(obj,1)>GET_OBJ_VAL(obj,0))
send_to_char(ch, "Its contents seem somewhat murky.\r\n"); /* BUG */ send_to_char(ch, "Its contents seem somewhat murky.\r\n"); /* BUG */
else { else
{
char buf2[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH];
amt = (GET_OBJ_VAL(obj, 1) * 3) / GET_OBJ_VAL(obj, 0); amt = (GET_OBJ_VAL(obj, 1) * 3) / GET_OBJ_VAL(obj, 0);
sprinttype(GET_OBJ_VAL(obj, 2), color_liquid, buf2, sizeof(buf2)); sprinttype(GET_OBJ_VAL(obj, 2), color_liquid, buf2, sizeof(buf2));
@@ -624,11 +632,11 @@ char *find_exdesc(char *word, struct extra_descr_data *list)
* matches the target. First, see if there is another char in the room with * matches the target. First, see if there is another char in the room with
* the name. Then check local objs for exdescs. Thanks to Angus Mezick for * the name. Then check local objs for exdescs. Thanks to Angus Mezick for
* the suggested fix to this problem. */ * the suggested fix to this problem. */
static void look_at_target(char_data *ch, char *arg) static void look_at_target(struct char_data *ch, char *arg)
{ {
int bits, found = FALSE, j, fnum, i = 0; int bits, found = FALSE, j, fnum, i = 0;
char_data *found_char = NULL; struct char_data *found_char = NULL;
obj_data *obj, *found_obj = NULL; struct obj_data *obj, *found_obj = NULL;
char *desc; char *desc;
if (!ch->desc) if (!ch->desc)
@@ -758,8 +766,8 @@ ACMD(do_look)
ACMD(do_examine) ACMD(do_examine)
{ {
char_data *tmp_char; struct char_data *tmp_char;
obj_data *tmp_object; struct obj_data *tmp_object;
char tempsave[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; char tempsave[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH];
one_argument(argument, arg); one_argument(argument, arg);
@@ -829,7 +837,8 @@ ACMD(do_score)
GET_NUM_QUESTS(ch) == 1 ? "" : "s"); GET_NUM_QUESTS(ch) == 1 ? "" : "s");
if (GET_QUEST(ch) == NOTHING) if (GET_QUEST(ch) == NOTHING)
send_to_char(ch, "and you are not on a quest at the moment.\r\n"); send_to_char(ch, "and you are not on a quest at the moment.\r\n");
else { else
{
send_to_char(ch, "and your current quest is: %s", QST_NAME(real_quest(GET_QUEST(ch)))); send_to_char(ch, "and your current quest is: %s", QST_NAME(real_quest(GET_QUEST(ch))));
if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_SHOWVNUMS)) if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_SHOWVNUMS))
@@ -870,7 +879,7 @@ ACMD(do_score)
if (!SITTING(ch)) if (!SITTING(ch))
send_to_char(ch, "You are sitting.\r\n"); send_to_char(ch, "You are sitting.\r\n");
else { else {
obj_data *furniture = SITTING(ch); struct obj_data *furniture = SITTING(ch);
send_to_char(ch, "You are sitting upon %s.\r\n", furniture->short_description); send_to_char(ch, "You are sitting upon %s.\r\n", furniture->short_description);
} }
break; break;
@@ -1011,18 +1020,19 @@ ACMD(do_weather)
"lit by flashes of lightning" "lit by flashes of lightning"
}; };
if (OUTSIDE(ch)) { if (OUTSIDE(ch))
{
send_to_char(ch, "The sky is %s and %s.\r\n", sky_look[weather_info.sky], send_to_char(ch, "The sky is %s and %s.\r\n", sky_look[weather_info.sky],
weather_info.change >= 0 weather_info.change >= 0 ? "you feel a warm wind from south" :
? "you feel a warm wind from south" "your foot tells you bad weather is due");
: "your foot tells you bad weather is due");
if (GET_LEVEL(ch) >= LVL_GOD) if (GET_LEVEL(ch) >= LVL_GOD)
send_to_char(ch, "Pressure: %d (change: %d), Sky: %d (%s)\r\n", send_to_char(ch, "Pressure: %d (change: %d), Sky: %d (%s)\r\n",
weather_info.pressure, weather_info.pressure,
weather_info.change, weather_info.change,
weather_info.sky, weather_info.sky,
sky_look[weather_info.sky]); sky_look[weather_info.sky]);
} else }
else
send_to_char(ch, "You have no feeling about the weather at all.\r\n"); send_to_char(ch, "You have no feeling about the weather at all.\r\n");
} }
@@ -1054,7 +1064,8 @@ int search_help(const char *argument, int level)
break; break;
return (mid); return (mid);
} else if (chk > 0) }
else if (chk > 0)
bot = mid + 1; bot = mid + 1;
else else
top = mid - 1; top = mid - 1;
@@ -1116,8 +1127,8 @@ ACMD(do_help)
/* Written by Rhade */ /* Written by Rhade */
ACMD(do_who) ACMD(do_who)
{ {
descriptor_data *d; struct descriptor_data *d;
char_data *tch; struct char_data *tch;
int i, num_can_see = 0; int i, num_can_see = 0;
char name_search[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH]; char name_search[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH];
char mode; char mode;
@@ -1125,19 +1136,15 @@ ACMD(do_who)
int showclass = 0, short_list = 0, outlaws = 0; int showclass = 0, short_list = 0, outlaws = 0;
int who_room = 0, showgroup = 0, showleader = 0; int who_room = 0, showgroup = 0, showleader = 0;
struct struct {
{
char *disp; char *disp;
int min_level; int min_level;
int max_level; int max_level;
int count; /* must always start as 0 */ int count; /* must always start as 0 */
} rank[] = { } rank[] = {
{ { "Immortals\r\n---------\r\n", LVL_IMMORT, LVL_IMPL, 0},
"Immortals\r\n---------\r\n", LVL_IMMORT, LVL_IMPL, 0}, { "Mortals\r\n-------\r\n", 1, LVL_IMMORT - 1, 0 },
{ { "\n", 0, 0, 0 }
"Mortals\r\n-------\r\n", 1, LVL_IMMORT - 1, 0},
{
"\n", 0, 0, 0}
}; };
skip_spaces(&argument); skip_spaces(&argument);
@@ -1367,8 +1374,8 @@ ACMD(do_users)
char line[200], line2[220], idletime[10], classname[20]; char line[200], line2[220], idletime[10], classname[20];
char state[30], timestr[9], mode; char state[30], timestr[9], mode;
char name_search[MAX_INPUT_LENGTH], host_search[MAX_INPUT_LENGTH]; char name_search[MAX_INPUT_LENGTH], host_search[MAX_INPUT_LENGTH];
char_data *tch; struct char_data *tch;
descriptor_data *d; struct descriptor_data *d;
int low = 0, high = LVL_IMPL, num_can_see = 0; int low = 0, high = LVL_IMPL, num_can_see = 0;
int showclass = 0, outlaws = 0, playing = 0, deadweight = 0; int showclass = 0, outlaws = 0, playing = 0, deadweight = 0;
char buf[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH];
@@ -1479,11 +1486,9 @@ ACMD(do_users)
strcpy(idletime, " "); strcpy(idletime, " ");
sprintf(line, "%3d %-7s %-12s %-14s %-3s %-8s ", d->desc_num, classname, sprintf(line, "%3d %-7s %-12s %-14s %-3s %-8s ", d->desc_num, classname,
d->original && d->original->player.name d->original && d->original->player.name ? d->original->player.name :
? d->original->player.name d->character && d->character->player.name ? d->character->player.name :
: d->character && d->character->player.name "UNDEFINED",
? d->character->player.name
: "UNDEFINED",
state, idletime, timestr); state, idletime, timestr);
if (*d->host) if (*d->host)
@@ -1563,10 +1568,10 @@ ACMD(do_gen_ps)
} }
} }
static void perform_mortal_where(char_data *ch, char *arg) static void perform_mortal_where(struct char_data *ch, char *arg)
{ {
char_data *i; struct char_data *i;
descriptor_data *d; struct descriptor_data *d;
int j; int j;
if (!*arg) { if (!*arg) {
@@ -1657,7 +1662,7 @@ static void perform_immort_where(char_data *ch, const char *arg)
{ {
char_data *i; char_data *i;
obj_data *k; obj_data *k;
descriptor_data *d; struct descriptor_data *d;
int num = 0, found = FALSE; // "num" here needs to match the lookup in do_stat, so "stat 4.sword" finds the right one int num = 0, found = FALSE; // "num" here needs to match the lookup in do_stat, so "stat 4.sword" finds the right one
const char *error_message = "\r\n***OVERFLOW***\r\n"; const char *error_message = "\r\n***OVERFLOW***\r\n";
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
@@ -1775,17 +1780,21 @@ ACMD(do_levels)
/* No valid args found */ /* No valid args found */
min_lev = 1; min_lev = 1;
max_lev = LVL_IMMORT; max_lev = LVL_IMMORT;
} else if (ret == 1) { }
else if (ret == 1) {
/* One arg = range is (num) either side of current level */ /* One arg = range is (num) either side of current level */
val = min_lev; val = min_lev;
max_lev = MIN(GET_LEVEL(ch) + val, LVL_IMMORT); max_lev = MIN(GET_LEVEL(ch) + val, LVL_IMMORT);
min_lev = MAX(GET_LEVEL(ch) - val, 1); min_lev = MAX(GET_LEVEL(ch) - val, 1);
} else if (ret == 2) { }
else if (ret == 2) {
/* Two args = min-max range limit - just do sanity checks */ /* Two args = min-max range limit - just do sanity checks */
min_lev = MAX(min_lev, 1); min_lev = MAX(min_lev, 1);
max_lev = MIN(max_lev + 1, LVL_IMMORT); max_lev = MIN(max_lev + 1, LVL_IMMORT);
} }
} else { }
else
{
send_to_char(ch, "Usage: %slevels [<min>-<max> | <range>]%s\r\n\r\n", QYEL, QNRM); send_to_char(ch, "Usage: %slevels [<min>-<max> | <range>]%s\r\n\r\n", QYEL, QNRM);
send_to_char(ch, "Displays exp required for levels.\r\n"); send_to_char(ch, "Displays exp required for levels.\r\n");
send_to_char(ch, "%slevels %s- shows all levels (1-%d)\r\n", QCYN, QNRM, (LVL_IMMORT-1)); send_to_char(ch, "%slevels %s- shows all levels (1-%d)\r\n", QCYN, QNRM, (LVL_IMMORT-1));
@@ -1828,7 +1837,7 @@ ACMD(do_levels)
ACMD(do_consider) ACMD(do_consider)
{ {
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
char_data *victim; struct char_data *victim;
int diff; int diff;
one_argument(argument, buf); one_argument(argument, buf);
@@ -1874,7 +1883,7 @@ ACMD(do_consider)
ACMD(do_diagnose) ACMD(do_diagnose)
{ {
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
one_argument(argument, buf); one_argument(argument, buf);
@@ -1897,180 +1906,109 @@ ACMD(do_toggle)
int toggle, tp, wimp_lev, result = 0, len = 0, i; int toggle, tp, wimp_lev, result = 0, len = 0, i;
const char *types[] = { "off", "brief", "normal", "on", "\n" }; const char *types[] = { "off", "brief", "normal", "on", "\n" };
const struct const struct {
{
char *command; char *command;
bitvector_t toggle; /* this needs changing once hashmaps are implemented */ bitvector_t toggle; /* this needs changing once hashmaps are implemented */
char min_level; char min_level;
char *disable_msg; char *disable_msg;
char *enable_msg; char *enable_msg;
} tog_messages[] = { } tog_messages[] = {
{ {"summonable", PRF_SUMMONABLE, 0,
"summonable", PRF_SUMMONABLE, 0,
"You are now safe from summoning by other players.\r\n", "You are now safe from summoning by other players.\r\n",
"You may now be summoned by other players.\r\n" "You may now be summoned by other players.\r\n"},
}, {"nohassle", PRF_NOHASSLE, LVL_IMMORT,
{
"nohassle", PRF_NOHASSLE, LVL_IMMORT,
"Nohassle disabled.\r\n", "Nohassle disabled.\r\n",
"Nohassle enabled.\r\n" "Nohassle enabled.\r\n"},
}, {"brief", PRF_BRIEF, 0,
{
"brief", PRF_BRIEF, 0,
"Brief mode off.\r\n", "Brief mode off.\r\n",
"Brief mode on.\r\n" "Brief mode on.\r\n"},
}, {"compact", PRF_COMPACT, 0,
{
"compact", PRF_COMPACT, 0,
"Compact mode off.\r\n", "Compact mode off.\r\n",
"Compact mode on.\r\n" "Compact mode on.\r\n"},
}, {"notell", PRF_NOTELL, 0,
{
"notell", PRF_NOTELL, 0,
"You can now hear tells.\r\n", "You can now hear tells.\r\n",
"You are now deaf to tells.\r\n" "You are now deaf to tells.\r\n"},
}, {"noauction", PRF_NOAUCT, 0,
{
"noauction", PRF_NOAUCT, 0,
"You can now hear auctions.\r\n", "You can now hear auctions.\r\n",
"You are now deaf to auctions.\r\n" "You are now deaf to auctions.\r\n"},
}, {"noshout", PRF_NOSHOUT, 0,
{
"noshout", PRF_NOSHOUT, 0,
"You can now hear shouts.\r\n", "You can now hear shouts.\r\n",
"You are now deaf to shouts.\r\n" "You are now deaf to shouts.\r\n"},
}, {"nogossip", PRF_NOGOSS, 0,
{
"nogossip", PRF_NOGOSS, 0,
"You can now hear gossip.\r\n", "You can now hear gossip.\r\n",
"You are now deaf to gossip.\r\n" "You are now deaf to gossip.\r\n"},
}, {"nograts", PRF_NOGRATZ, 0,
{
"nograts", PRF_NOGRATZ, 0,
"You can now hear gratz.\r\n", "You can now hear gratz.\r\n",
"You are now deaf to gratz.\r\n" "You are now deaf to gratz.\r\n"},
}, {"nowiz", PRF_NOWIZ, LVL_IMMORT,
{
"nowiz", PRF_NOWIZ, LVL_IMMORT,
"You can now hear the Wiz-channel.\r\n", "You can now hear the Wiz-channel.\r\n",
"You are now deaf to the Wiz-channel.\r\n" "You are now deaf to the Wiz-channel.\r\n"},
}, {"quest", PRF_QUEST, 0,
{
"quest", PRF_QUEST, 0,
"You are no longer part of the Quest.\r\n", "You are no longer part of the Quest.\r\n",
"Okay, you are part of the Quest.\r\n" "Okay, you are part of the Quest.\r\n"},
}, {"showvnums", PRF_SHOWVNUMS, LVL_IMMORT,
{
"showvnums", PRF_SHOWVNUMS, LVL_IMMORT,
"You will no longer see the vnums.\r\n", "You will no longer see the vnums.\r\n",
"You will now see the vnums.\r\n" "You will now see the vnums.\r\n"},
}, {"norepeat", PRF_NOREPEAT, 0,
{
"norepeat", PRF_NOREPEAT, 0,
"You will now have your communication repeated.\r\n", "You will now have your communication repeated.\r\n",
"You will no longer have your communication repeated.\r\n" "You will no longer have your communication repeated.\r\n"},
}, {"holylight", PRF_HOLYLIGHT, LVL_IMMORT,
{
"holylight", PRF_HOLYLIGHT, LVL_IMMORT,
"HolyLight mode off.\r\n", "HolyLight mode off.\r\n",
"HolyLight mode on.\r\n" "HolyLight mode on.\r\n"},
}, {"slownameserver", 0, LVL_IMPL,
{
"slownameserver", 0, LVL_IMPL,
"Nameserver_is_slow changed to OFF; IP addresses will now be resolved.\r\n", "Nameserver_is_slow changed to OFF; IP addresses will now be resolved.\r\n",
"Nameserver_is_slow changed to ON; sitenames will no longer be resolved.\r\n" "Nameserver_is_slow changed to ON; sitenames will no longer be resolved.\r\n"},
}, {"autoexits", PRF_AUTOEXIT, 0,
{
"autoexits", PRF_AUTOEXIT, 0,
"Autoexits disabled.\r\n", "Autoexits disabled.\r\n",
"Autoexits enabled.\r\n" "Autoexits enabled.\r\n"},
}, {"trackthru", 0, LVL_IMPL,
{
"trackthru", 0, LVL_IMPL,
"Players can no longer track through doors.\r\n", "Players can no longer track through doors.\r\n",
"Players can now track through doors.\r\n" "Players can now track through doors.\r\n"},
}, {"clsolc", PRF_CLS, LVL_BUILDER,
{
"clsolc", PRF_CLS, LVL_BUILDER,
"You will no longer clear screen in OLC.\r\n", "You will no longer clear screen in OLC.\r\n",
"You will now clear screen in OLC.\r\n" "You will now clear screen in OLC.\r\n"},
}, {"buildwalk", PRF_BUILDWALK, LVL_BUILDER,
{
"buildwalk", PRF_BUILDWALK, LVL_BUILDER,
"Buildwalk is now Off.\r\n", "Buildwalk is now Off.\r\n",
"Buildwalk is now On.\r\n" "Buildwalk is now On.\r\n"},
}, {"afk", PRF_AFK, 0,
{
"afk", PRF_AFK, 0,
"AFK is now Off.\r\n", "AFK is now Off.\r\n",
"AFK is now On.\r\n" "AFK is now On.\r\n"},
}, {"autoloot", PRF_AUTOLOOT, 0,
{
"autoloot", PRF_AUTOLOOT, 0,
"Autoloot disabled.\r\n", "Autoloot disabled.\r\n",
"Autoloot enabled.\r\n" "Autoloot enabled.\r\n"},
}, {"autogold", PRF_AUTOGOLD, 0,
{
"autogold", PRF_AUTOGOLD, 0,
"Autogold disabled.\r\n", "Autogold disabled.\r\n",
"Autogold enabled.\r\n" "Autogold enabled.\r\n"},
}, {"autosplit", PRF_AUTOSPLIT, 0,
{
"autosplit", PRF_AUTOSPLIT, 0,
"Autosplit disabled.\r\n", "Autosplit disabled.\r\n",
"Autosplit enabled.\r\n" "Autosplit enabled.\r\n"},
}, {"autosac", PRF_AUTOSAC, 0,
{
"autosac", PRF_AUTOSAC, 0,
"Autosac disabled.\r\n", "Autosac disabled.\r\n",
"Autosac enabled.\r\n" "Autosac enabled.\r\n"},
}, {"autoassist", PRF_AUTOASSIST, 0,
{
"autoassist", PRF_AUTOASSIST, 0,
"Autoassist disabled.\r\n", "Autoassist disabled.\r\n",
"Autoassist enabled.\r\n" "Autoassist enabled.\r\n"},
}, {"automap", PRF_AUTOMAP, 1,
{
"automap", PRF_AUTOMAP, 1,
"You will no longer see the mini-map.\r\n", "You will no longer see the mini-map.\r\n",
"You will now see a mini-map at the side of room descriptions.\r\n" "You will now see a mini-map at the side of room descriptions.\r\n"},
}, {"autokey", PRF_AUTOKEY, 0,
{
"autokey", PRF_AUTOKEY, 0,
"You will now have to unlock doors manually before opening.\r\n", "You will now have to unlock doors manually before opening.\r\n",
"You will now automatically unlock doors when opening them (if you have the key).\r\n" "You will now automatically unlock doors when opening them (if you have the key).\r\n"},
}, {"autodoor", PRF_AUTODOOR, 0,
{
"autodoor", PRF_AUTODOOR, 0,
"You will now need to specify a door direction when opening, closing and unlocking.\r\n", "You will now need to specify a door direction when opening, closing and unlocking.\r\n",
"You will now find the next available door when opening, closing or unlocking.\r\n" "You will now find the next available door when opening, closing or unlocking.\r\n"},
}, {"zoneresets", PRF_ZONERESETS, LVL_IMPL,
{
"zoneresets", PRF_ZONERESETS, LVL_IMPL,
"You will no longer see zone resets.\r\n", "You will no longer see zone resets.\r\n",
"You will now see zone resets.\r\n" "You will now see zone resets.\r\n"},
}, {"syslog", 0, LVL_IMMORT, "\n", "\n"},
{ {"wimpy", 0, 0, "\n", "\n"},
"syslog", 0, LVL_IMMORT, "\n", "\n" {"pagelength", 0, 0, "\n", "\n"},
}, {"screenwidth", 0, 0, "\n", "\n"},
{ {"color", 0, 0, "\n", "\n"},
"wimpy", 0, 0, "\n", "\n" {"verbose", PRF_VERBOSE, LVL_IMMORT,
},
{
"pagelength", 0, 0, "\n", "\n"
},
{
"screenwidth", 0, 0, "\n", "\n"
},
{
"color", 0, 0, "\n", "\n"
},
{
"verbose", PRF_VERBOSE, LVL_IMMORT,
"You will no longer see verbose output in listings.\n", "You will no longer see verbose output in listings.\n",
"You will now see verbose listings.\n"}, "You will now see verbose listings.\n"},
{"\n", 0, -1, "\n", "\n" {"\n", 0, -1, "\n", "\n"} /* must be last */
} /* must be last */
}; };
if (IS_NPC(ch)) if (IS_NPC(ch))
@@ -2221,10 +2159,8 @@ ACMD(do_toggle)
} }
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_1); REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_1);
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_2); REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_2);
if (tp & 1) if (tp & 1) SET_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_1);
SET_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_1); if (tp & 2) SET_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_2);
if (tp & 2)
SET_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_2);
send_to_char(ch, "Your %scolor%s is now %s.\r\n", CCRED(ch, C_SPR), CCNRM(ch, C_OFF), types[tp]); send_to_char(ch, "Your %scolor%s is now %s.\r\n", CCRED(ch, C_SPR), CCNRM(ch, C_OFF), types[tp]);
return; return;
@@ -2240,10 +2176,8 @@ ACMD(do_toggle)
} }
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_LOG1); REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_LOG1);
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_LOG2); REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_LOG2);
if (tp & 1) if (tp & 1) SET_BIT_AR(PRF_FLAGS(ch), PRF_LOG1);
SET_BIT_AR(PRF_FLAGS(ch), PRF_LOG1); if (tp & 2) SET_BIT_AR(PRF_FLAGS(ch), PRF_LOG2);
if (tp & 2)
SET_BIT_AR(PRF_FLAGS(ch), PRF_LOG2);
send_to_char(ch, "Your syslog is now %s.\r\n", types[tp]); send_to_char(ch, "Your syslog is now %s.\r\n", types[tp]);
return; return;
@@ -2409,7 +2343,7 @@ ACMD(do_commands)
column_list(ch, 0, commands, no, FALSE); column_list(ch, 0, commands, no, FALSE);
} }
void free_history(char_data *ch, int type) void free_history(struct char_data *ch, int type)
{ {
struct txt_block *tmp = GET_HISTORY(ch, type), *ftmp; struct txt_block *tmp = GET_HISTORY(ch, type), *ftmp;
@@ -2457,8 +2391,7 @@ ACMD(do_history)
} }
#define HIST_LENGTH 100 #define HIST_LENGTH 100
void add_history(struct char_data *ch, char *str, int type)
void add_history(char_data *ch, char *str, int type)
{ {
int i = 0; int i = 0;
char time_str[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH]; char time_str[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH];
@@ -2477,7 +2410,8 @@ void add_history(char_data *ch, char *str, int type)
if (!tmp) { if (!tmp) {
CREATE(GET_HISTORY(ch, type), struct txt_block, 1); CREATE(GET_HISTORY(ch, type), struct txt_block, 1);
GET_HISTORY(ch, type)->text = strdup(buf); GET_HISTORY(ch, type)->text = strdup(buf);
} else { }
else {
while (tmp->next) while (tmp->next)
tmp = tmp->next; tmp = tmp->next;
CREATE(tmp->next, struct txt_block, 1); CREATE(tmp->next, struct txt_block, 1);
@@ -2500,7 +2434,7 @@ void add_history(char_data *ch, char *str, int type)
ACMD(do_whois) ACMD(do_whois)
{ {
char_data *victim = 0; struct char_data *victim = 0;
int hours; int hours;
int got_from_file = 0; int got_from_file = 0;
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
@@ -2512,8 +2446,9 @@ ACMD(do_whois)
return; return;
} }
if (!(victim = get_player_vis(ch, buf, NULL, FIND_CHAR_WORLD))) { if (!(victim=get_player_vis(ch, buf, NULL, FIND_CHAR_WORLD)))
CREATE(victim, char_data, 1); {
CREATE(victim, struct char_data, 1);
clear_char(victim); clear_char(victim);
new_mobile_data(victim); new_mobile_data(victim);
@@ -2554,9 +2489,9 @@ ACMD(do_whois)
send_to_char(ch, "\r\n"); send_to_char(ch, "\r\n");
if (PRF_FLAGGED(victim, PRF_AFK)) if (PRF_FLAGGED(victim, PRF_AFK))
send_to_char(ch, "%s%s is afk right now, so %s may not respond to communication.%s\r\n", CBGRN(ch, C_NRM), send_to_char(ch, "%s%s is afk right now, so %s may not respond to communication.%s\r\n", CBGRN(ch, C_NRM), GET_NAME(victim), HSSH(victim), CCNRM(ch, C_NRM));
GET_NAME(victim), HSSH(victim), CCNRM(ch, C_NRM)); }
} else if (hours > 0) else if (hours > 0)
send_to_char(ch, "Last Logon: %s (%d days & %d hours ago.)\r\n", buf, hours/24, hours%24); send_to_char(ch, "Last Logon: %s (%d days & %d hours ago.)\r\n", buf, hours/24, hours%24);
else else
send_to_char(ch, "Last Logon: %s (0 hours & %d minutes ago.)\r\n", send_to_char(ch, "Last Logon: %s (0 hours & %d minutes ago.)\r\n",
@@ -2573,13 +2508,8 @@ ACMD(do_whois)
if (!got_from_file && victim->desc != NULL && GET_LEVEL(ch) >= LVL_GOD) { if (!got_from_file && victim->desc != NULL && GET_LEVEL(ch) >= LVL_GOD) {
protocol_t * prot = victim->desc->pProtocol; protocol_t * prot = victim->desc->pProtocol;
send_to_char(ch, "Client: %s [%s]\r\n", prot->pVariables[eMSDP_CLIENT_ID]->pValueString, send_to_char(ch, "Client: %s [%s]\r\n", prot->pVariables[eMSDP_CLIENT_ID]->pValueString, prot->pVariables[eMSDP_CLIENT_VERSION]->pValueString ? prot->pVariables[eMSDP_CLIENT_VERSION]->pValueString : "Unknown");
prot->pVariables[eMSDP_CLIENT_VERSION]->pValueString send_to_char(ch, "Color: %s\r\n", prot->pVariables[eMSDP_XTERM_256_COLORS]->ValueInt ? "Xterm" : (prot->pVariables[eMSDP_ANSI_COLORS]->ValueInt ? "Ansi" : "None"));
? prot->pVariables[eMSDP_CLIENT_VERSION]->pValueString
: "Unknown");
send_to_char(ch, "Color: %s\r\n", prot->pVariables[eMSDP_XTERM_256_COLORS]->ValueInt
? "Xterm"
: (prot->pVariables[eMSDP_ANSI_COLORS]->ValueInt ? "Ansi" : "None"));
send_to_char(ch, "MXP: %s\r\n", prot->bMXP ? "Yes" : "No"); send_to_char(ch, "MXP: %s\r\n", prot->bMXP ? "Yes" : "No");
send_to_char(ch, "Charset: %s\r\n", prot->bCHARSET ? "Yes" : "No"); send_to_char(ch, "Charset: %s\r\n", prot->bCHARSET ? "Yes" : "No");
send_to_char(ch, "MSP: %s\r\n", prot->bMSP ? "Yes" : "No"); send_to_char(ch, "MSP: %s\r\n", prot->bMSP ? "Yes" : "No");
@@ -2670,8 +2600,7 @@ ACMD(do_areas)
} else if ((hilev != -1) && (lolev >= ZONE_MINLVL(i)) && (hilev <= ZONE_MAXLVL(i))) { } else if ((hilev != -1) && (lolev >= ZONE_MINLVL(i)) && (hilev <= ZONE_MAXLVL(i))) {
/* Range supplied, it's completely within this zone's range (no overlap) */ /* Range supplied, it's completely within this zone's range (no overlap) */
show_zone = TRUE; show_zone = TRUE;
} else if ((hilev != -1) && ((lolev >= ZONE_MINLVL(i) && lolev <= ZONE_MAXLVL(i)) || ( } else if ((hilev != -1) && ((lolev >= ZONE_MINLVL(i) && lolev <= ZONE_MAXLVL(i)) || (hilev <= ZONE_MAXLVL(i) && hilev >= ZONE_MINLVL(i)))) {
hilev <= ZONE_MAXLVL(i) && hilev >= ZONE_MINLVL(i)))) {
/* Range supplied, it overlaps this zone's range */ /* Range supplied, it overlaps this zone's range */
show_zone = TRUE; show_zone = TRUE;
overlap = TRUE; overlap = TRUE;
@@ -2686,23 +2615,19 @@ ACMD(do_areas)
} }
if (show_zone) { if (show_zone) {
if (overlap) if (overlap) overlap_shown = TRUE;
overlap_shown = TRUE;
lev_set = get_zone_levels(i, lev_str); lev_set = get_zone_levels(i, lev_str);
tmp_len = snprintf(buf + len, sizeof(buf) - len, "\tn(%3d) %s%-*s\tn %s%s\tn\r\n", ++zcount, tmp_len = snprintf(buf+len, sizeof(buf)-len, "\tn(%3d) %s%-*s\tn %s%s\tn\r\n", ++zcount, overlap ? QRED : QCYN,
overlap ? QRED : QCYN,
count_color_chars(zone_table[i].name)+30, zone_table[i].name, count_color_chars(zone_table[i].name)+30, zone_table[i].name,
lev_set ? "\tc" : "\tn", lev_set ? lev_str : "All Levels"); lev_set ? "\tc" : "\tn", lev_set ? lev_str : "All Levels");
len += tmp_len; len += tmp_len;
} }
} }
tmp_len = snprintf(buf + len, sizeof(buf) - len, "%s%d%s area%s found.\r\n", QYEL, zcount, QNRM, tmp_len = snprintf(buf+len, sizeof(buf)-len, "%s%d%s area%s found.\r\n", QYEL, zcount, QNRM, zcount == 1 ? "" : "s");
zcount == 1 ? "" : "s");
len += tmp_len; len += tmp_len;
if (overlap_shown) { if (overlap_shown) {
snprintf(buf + len, sizeof(buf) - len, snprintf(buf+len, sizeof(buf)-len, "Areas shown in \trred\tn may have some creatures outside the specified range.\r\n");
"Areas shown in \trred\tn may have some creatures outside the specified range.\r\n");
} }
if (zcount == 0) if (zcount == 0)
@@ -2711,7 +2636,7 @@ ACMD(do_areas)
page_string(ch->desc, buf, TRUE); page_string(ch->desc, buf, TRUE);
} }
static void list_scanned_chars(char_data *list, char_data *ch, int static void list_scanned_chars(struct char_data * list, struct char_data * ch, int
distance, int door) distance, int door)
{ {
char buf[MAX_STRING_LENGTH], buf2[MAX_STRING_LENGTH - 1]; char buf[MAX_STRING_LENGTH], buf2[MAX_STRING_LENGTH - 1];
@@ -2722,7 +2647,7 @@ static void list_scanned_chars(char_data *list, char_data *ch, int
"far off to the" "far off to the"
}; };
char_data *i; struct char_data *i;
int count = 0; int count = 0;
*buf = '\0'; *buf = '\0';

View File

@@ -26,29 +26,31 @@
/* local function prototypes */ /* local function prototypes */
/* do_get utility functions */ /* do_get utility functions */
static int can_take_obj(char_data *ch, obj_data *obj); static int can_take_obj(struct char_data *ch, struct obj_data *obj);
static void get_check_money(char_data *ch, obj_data *obj); static void get_check_money(struct char_data *ch, struct obj_data *obj);
static void get_from_container(char_data *ch, obj_data *cont, char *arg, int mode, int amount); static void get_from_container(struct char_data *ch, struct obj_data *cont, char *arg, int mode, int amount);
static void get_from_room(char_data *ch, char *arg, int amount); static void get_from_room(struct char_data *ch, char *arg, int amount);
static void perform_get_from_container(char_data *ch, obj_data *obj, obj_data *cont, int mode); static void perform_get_from_container(struct char_data *ch, struct obj_data *obj, struct obj_data *cont, int mode);
static int perform_get_from_room(char_data *ch, obj_data *obj); static int perform_get_from_room(struct char_data *ch, struct obj_data *obj);
/* do_give utility functions */ /* do_give utility functions */
static char_data *give_find_vict(char_data *ch, char *arg); static struct char_data *give_find_vict(struct char_data *ch, char *arg);
static void perform_give(char_data *ch, char_data *vict, obj_data *obj); static void perform_give(struct char_data *ch, struct char_data *vict, struct obj_data *obj);
static void perform_give_gold(char_data *ch, char_data *vict, int amount); static void perform_give_gold(struct char_data *ch, struct char_data *vict, int amount);
/* do_drop utility functions */ /* do_drop utility functions */
static int perform_drop(char_data *ch, obj_data *obj, byte mode, const char *sname, room_rnum RDR); static int perform_drop(struct char_data *ch, struct obj_data *obj, byte mode, const char *sname, room_rnum RDR);
static void perform_drop_gold(char_data *ch, int amount, byte mode, room_rnum RDR); static void perform_drop_gold(struct char_data *ch, int amount, byte mode, room_rnum RDR);
/* do_put utility functions */ /* do_put utility functions */
static void perform_put(char_data *ch, obj_data *obj, obj_data *cont); static void perform_put(struct char_data *ch, struct obj_data *obj, struct obj_data *cont);
/* do_remove utility functions */ /* do_remove utility functions */
static void perform_remove(char_data *ch, int pos); static void perform_remove(struct char_data *ch, int pos);
/* do_wear utility functions */ /* do_wear utility functions */
static void perform_wear(char_data *ch, obj_data *obj, int where); static void perform_wear(struct char_data *ch, struct obj_data *obj, int where);
static void wear_message(char_data *ch, obj_data *obj, int where); static void wear_message(struct char_data *ch, struct obj_data *obj, int where);
static void perform_put(char_data *ch, obj_data *obj, obj_data *cont)
static void perform_put(struct char_data *ch, struct obj_data *obj, struct obj_data *cont)
{ {
long object_id = obj_script_id(obj); long object_id = obj_script_id(obj);
@@ -90,8 +92,8 @@ ACMD(do_put)
char arg1[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH];
obj_data *obj, *next_obj, *cont; struct obj_data *obj, *next_obj, *cont;
char_data *tmp_char; struct char_data *tmp_char;
int obj_dotmode, cont_dotmode, found = 0, howmany = 1; int obj_dotmode, cont_dotmode, found = 0, howmany = 1;
char *theobj, *thecont; char *theobj, *thecont;
@@ -124,7 +126,7 @@ ACMD(do_put)
send_to_char(ch, "You'd better open it first!\r\n"); send_to_char(ch, "You'd better open it first!\r\n");
else { else {
if (obj_dotmode == FIND_INDIV) { /* put <obj> <container> */ if (obj_dotmode == FIND_INDIV) { /* put <obj> <container> */
if (!((obj = get_obj_in_list_vis(ch, theobj, NULL, ch->carrying)))) if (!(obj = get_obj_in_list_vis(ch, theobj, NULL, ch->carrying)))
send_to_char(ch, "You aren't carrying %s %s.\r\n", AN(theobj), theobj); send_to_char(ch, "You aren't carrying %s %s.\r\n", AN(theobj), theobj);
else if (obj == cont && howmany == 1) else if (obj == cont && howmany == 1)
send_to_char(ch, "You attempt to fold it into itself, but fail.\r\n"); send_to_char(ch, "You attempt to fold it into itself, but fail.\r\n");
@@ -158,7 +160,7 @@ ACMD(do_put)
} }
} }
static int can_take_obj(char_data *ch, obj_data *obj) static int can_take_obj(struct char_data *ch, struct obj_data *obj)
{ {
if (!(CAN_WEAR(obj, ITEM_WEAR_TAKE))) { if (!(CAN_WEAR(obj, ITEM_WEAR_TAKE))) {
act("$p: you can't take that!", FALSE, ch, obj, 0, TO_CHAR); act("$p: you can't take that!", FALSE, ch, obj, 0, TO_CHAR);
@@ -183,7 +185,7 @@ static int can_take_obj(char_data *ch, obj_data *obj)
return (1); return (1);
} }
static void get_check_money(char_data *ch, obj_data *obj) static void get_check_money(struct char_data *ch, struct obj_data *obj)
{ {
int value = GET_OBJ_VAL(obj, 0); int value = GET_OBJ_VAL(obj, 0);
@@ -200,8 +202,8 @@ static void get_check_money(char_data *ch, obj_data *obj)
send_to_char(ch, "There were %d coins.\r\n", value); send_to_char(ch, "There were %d coins.\r\n", value);
} }
static void perform_get_from_container(char_data *ch, obj_data *obj, static void perform_get_from_container(struct char_data *ch, struct obj_data *obj,
obj_data *cont, int mode) struct obj_data *cont, int mode)
{ {
if (mode == FIND_OBJ_INV || can_take_obj(ch, obj)) { if (mode == FIND_OBJ_INV || can_take_obj(ch, obj)) {
if (IS_CARRYING_N(ch) >= CAN_CARRY_N(ch)) if (IS_CARRYING_N(ch) >= CAN_CARRY_N(ch))
@@ -216,10 +218,10 @@ static void perform_get_from_container(char_data *ch, obj_data *obj,
} }
} }
void get_from_container(char_data *ch, obj_data *cont, void get_from_container(struct char_data *ch, struct obj_data *cont,
char *arg, int mode, int howmany) char *arg, int mode, int howmany)
{ {
obj_data *obj, *next_obj; struct obj_data *obj, *next_obj;
int obj_dotmode, found = 0; int obj_dotmode, found = 0;
obj_dotmode = find_all_dots(arg); obj_dotmode = find_all_dots(arg);
@@ -233,7 +235,7 @@ void get_from_container(char_data *ch, obj_data *cont,
snprintf(buf, sizeof(buf), "There doesn't seem to be %s %s in $p.", AN(arg), arg); snprintf(buf, sizeof(buf), "There doesn't seem to be %s %s in $p.", AN(arg), arg);
act(buf, FALSE, ch, cont, 0, TO_CHAR); act(buf, FALSE, ch, cont, 0, TO_CHAR);
} else { } else {
obj_data *obj_next; struct obj_data *obj_next;
while (obj && howmany--) { while (obj && howmany--) {
obj_next = obj->next_content; obj_next = obj->next_content;
perform_get_from_container(ch, obj, cont, mode); perform_get_from_container(ch, obj, cont, mode);
@@ -266,7 +268,7 @@ void get_from_container(char_data *ch, obj_data *cont,
} }
} }
static int perform_get_from_room(char_data *ch, obj_data *obj) static int perform_get_from_room(struct char_data *ch, struct obj_data *obj)
{ {
if (can_take_obj(ch, obj) && get_otrigger(obj, ch)) { if (can_take_obj(ch, obj) && get_otrigger(obj, ch)) {
obj_from_room(obj); obj_from_room(obj);
@@ -279,9 +281,9 @@ static int perform_get_from_room(char_data *ch, obj_data *obj)
return (0); return (0);
} }
static void get_from_room(char_data *ch, char *arg, int howmany) static void get_from_room(struct char_data *ch, char *arg, int howmany)
{ {
obj_data *obj, *next_obj; struct obj_data *obj, *next_obj;
int dotmode, found = 0; int dotmode, found = 0;
dotmode = find_all_dots(arg); dotmode = find_all_dots(arg);
@@ -295,7 +297,7 @@ static void get_from_room(char_data *ch, char *arg, int howmany)
} }
send_to_char(ch, "You don't see %s %s here.\r\n", AN(arg), arg); send_to_char(ch, "You don't see %s %s here.\r\n", AN(arg), arg);
} else { } else {
obj_data *obj_next; struct obj_data *obj_next;
while(obj && howmany--) { while(obj && howmany--) {
obj_next = obj->next_content; obj_next = obj->next_content;
perform_get_from_room(ch, obj); perform_get_from_room(ch, obj);
@@ -331,8 +333,8 @@ ACMD(do_get)
char arg3[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH];
int cont_dotmode, found = 0, mode; int cont_dotmode, found = 0, mode;
obj_data *cont; struct obj_data *cont;
char_data *tmp_char; struct char_data *tmp_char;
one_argument(two_arguments(argument, arg1, arg2), arg3); /* three_arguments */ one_argument(two_arguments(argument, arg1, arg2), arg3); /* three_arguments */
@@ -395,9 +397,9 @@ ACMD(do_get)
} }
} }
static void perform_drop_gold(char_data *ch, int amount, byte mode, room_rnum RDR) static void perform_drop_gold(struct char_data *ch, int amount, byte mode, room_rnum RDR)
{ {
obj_data *obj; struct obj_data *obj;
if (amount <= 0) if (amount <= 0)
send_to_char(ch, "Heh heh heh.. we are jolly funny today, eh?\r\n"); send_to_char(ch, "Heh heh heh.. we are jolly funny today, eh?\r\n");
@@ -444,8 +446,7 @@ static void perform_drop_gold(char_data *ch, int amount, byte mode, room_rnum RD
#define VANISH(mode) ((mode == SCMD_DONATE || mode == SCMD_JUNK) ? \ #define VANISH(mode) ((mode == SCMD_DONATE || mode == SCMD_JUNK) ? \
" It vanishes in a puff of smoke!" : "") " It vanishes in a puff of smoke!" : "")
static int perform_drop(struct char_data *ch, struct obj_data *obj,
static int perform_drop(char_data *ch, obj_data *obj,
byte mode, const char *sname, room_rnum RDR) byte mode, const char *sname, room_rnum RDR)
{ {
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
@@ -506,7 +507,7 @@ static int perform_drop(char_data *ch, obj_data *obj,
ACMD(do_drop) ACMD(do_drop)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *obj, *next_obj; struct obj_data *obj, *next_obj;
room_rnum RDR = 0; room_rnum RDR = 0;
byte mode = SCMD_DROP; byte mode = SCMD_DROP;
int dotmode, amount = 0, multi, num_don_rooms; int dotmode, amount = 0, multi, num_don_rooms;
@@ -532,12 +533,8 @@ ACMD(do_drop)
case 2: case 2:
RDR = real_room(CONFIG_DON_ROOM_1); RDR = real_room(CONFIG_DON_ROOM_1);
break; break;
case 3: case 3: RDR = real_room(CONFIG_DON_ROOM_2); break;
RDR = real_room(CONFIG_DON_ROOM_2); case 4: RDR = real_room(CONFIG_DON_ROOM_3); break;
break;
case 4:
RDR = real_room(CONFIG_DON_ROOM_3);
break;
} }
if (RDR == NOWHERE) { if (RDR == NOWHERE) {
@@ -571,8 +568,7 @@ ACMD(do_drop)
next_obj = get_obj_in_list_vis(ch, arg, NULL, obj->next_content); next_obj = get_obj_in_list_vis(ch, arg, NULL, obj->next_content);
amount += perform_drop(ch, obj, mode, sname, RDR); amount += perform_drop(ch, obj, mode, sname, RDR);
obj = next_obj; obj = next_obj;
} } while (obj && --multi);
while (obj && --multi);
} }
} else { } else {
dotmode = find_all_dots(arg); dotmode = find_all_dots(arg);
@@ -621,8 +617,8 @@ ACMD(do_drop)
} }
} }
static void perform_give(char_data *ch, char_data *vict, static void perform_give(struct char_data *ch, struct char_data *vict,
obj_data *obj) struct obj_data *obj)
{ {
if (!give_otrigger(obj, ch, vict)) if (!give_otrigger(obj, ch, vict))
return; return;
@@ -637,8 +633,7 @@ static void perform_give(char_data *ch, char_data *vict,
act("$N seems to have $S hands full.", FALSE, ch, 0, vict, TO_CHAR); act("$N seems to have $S hands full.", FALSE, ch, 0, vict, TO_CHAR);
return; return;
} }
if (GET_OBJ_WEIGHT(obj) + IS_CARRYING_W(vict) > CAN_CARRY_W(vict) && GET_LEVEL(ch) < LVL_IMMORT && GET_LEVEL(vict) < if (GET_OBJ_WEIGHT(obj) + IS_CARRYING_W(vict) > CAN_CARRY_W(vict) && GET_LEVEL(ch) < LVL_IMMORT && GET_LEVEL(vict) < LVL_IMMORT) {
LVL_IMMORT) {
act("$E can't carry that much weight.", FALSE, ch, 0, vict, TO_CHAR); act("$E can't carry that much weight.", FALSE, ch, 0, vict, TO_CHAR);
return; return;
} }
@@ -652,9 +647,9 @@ static void perform_give(char_data *ch, char_data *vict,
} }
/* utility function for give */ /* utility function for give */
static char_data *give_find_vict(char_data *ch, char *arg) static struct char_data *give_find_vict(struct char_data *ch, char *arg)
{ {
char_data *vict; struct char_data *vict;
skip_spaces(&arg); skip_spaces(&arg);
if (!*arg) if (!*arg)
@@ -669,7 +664,7 @@ static char_data *give_find_vict(char_data *ch, char *arg)
return (NULL); return (NULL);
} }
static void perform_give_gold(char_data *ch, char_data *vict, static void perform_give_gold(struct char_data *ch, struct char_data *vict,
int amount) int amount)
{ {
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
@@ -701,8 +696,8 @@ ACMD(do_give)
{ {
char arg[MAX_STRING_LENGTH]; char arg[MAX_STRING_LENGTH];
int amount, dotmode; int amount, dotmode;
char_data *vict; struct char_data *vict;
obj_data *obj, *next_obj; struct obj_data *obj, *next_obj;
argument = one_argument(argument, arg); argument = one_argument(argument, arg);
@@ -759,10 +754,10 @@ ACMD(do_give)
} }
} }
void weight_change_object(obj_data *obj, int weight) void weight_change_object(struct obj_data *obj, int weight)
{ {
obj_data *tmp_obj; struct obj_data *tmp_obj;
char_data *tmp_ch; struct char_data *tmp_ch;
if (IN_ROOM(obj) != NOWHERE) { if (IN_ROOM(obj) != NOWHERE) {
GET_OBJ_WEIGHT(obj) += weight; GET_OBJ_WEIGHT(obj) += weight;
@@ -782,7 +777,7 @@ void weight_change_object(obj_data *obj, int weight)
} }
} }
void name_from_drinkcon(obj_data *obj) void name_from_drinkcon(struct obj_data *obj)
{ {
const char *liqname; const char *liqname;
char *new_name; char *new_name;
@@ -802,7 +797,7 @@ void name_from_drinkcon(obj_data *obj)
} }
void name_to_drinkcon(obj_data *obj, int type) void name_to_drinkcon(struct obj_data *obj, int type)
{ {
char *new_name; char *new_name;
@@ -821,7 +816,7 @@ void name_to_drinkcon(obj_data *obj, int type)
ACMD(do_drink) ACMD(do_drink)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *temp; struct obj_data *temp;
struct affected_type af; struct affected_type af;
int amount, weight; int amount, weight;
int on_ground = 0; int on_ground = 0;
@@ -951,7 +946,7 @@ ACMD(do_drink)
ACMD(do_eat) ACMD(do_eat)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *food; struct obj_data *food;
struct affected_type af; struct affected_type af;
int amount; int amount;
@@ -1024,7 +1019,7 @@ ACMD(do_eat)
ACMD(do_pour) ACMD(do_pour)
{ {
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH];
obj_data *from_obj = NULL, *to_obj = NULL; struct obj_data *from_obj = NULL, *to_obj = NULL;
int amount = 0; int amount = 0;
two_arguments(argument, arg1, arg2); two_arguments(argument, arg1, arg2);
@@ -1089,7 +1084,8 @@ ACMD(do_pour)
GET_OBJ_VAL(from_obj, 1) = 0; GET_OBJ_VAL(from_obj, 1) = 0;
GET_OBJ_VAL(from_obj, 2) = 0; GET_OBJ_VAL(from_obj, 2) = 0;
GET_OBJ_VAL(from_obj, 3) = 0; GET_OBJ_VAL(from_obj, 3) = 0;
} else }
else
send_to_char(ch, "You can't possibly pour that container out!\r\n"); send_to_char(ch, "You can't possibly pour that container out!\r\n");
return; return;
@@ -1146,12 +1142,14 @@ ACMD(do_pour)
GET_OBJ_VAL(from_obj, 2) = 0; GET_OBJ_VAL(from_obj, 2) = 0;
GET_OBJ_VAL(from_obj, 3) = 0; GET_OBJ_VAL(from_obj, 3) = 0;
} }
} else { }
else {
GET_OBJ_VAL(to_obj, 1) = GET_OBJ_VAL(to_obj, 0); GET_OBJ_VAL(to_obj, 1) = GET_OBJ_VAL(to_obj, 0);
amount = GET_OBJ_VAL(to_obj, 0); amount = GET_OBJ_VAL(to_obj, 0);
} }
/* Poisoned? */ /* Poisoned? */
GET_OBJ_VAL(to_obj, 3) = (GET_OBJ_VAL(to_obj, 3) || GET_OBJ_VAL(from_obj, 3)); GET_OBJ_VAL(to_obj, 3) = (GET_OBJ_VAL(to_obj, 3) || GET_OBJ_VAL(from_obj, 3))
;
/* Weight change, except for unlimited. */ /* Weight change, except for unlimited. */
if (GET_OBJ_VAL(from_obj, 0) > 0) { if (GET_OBJ_VAL(from_obj, 0) > 0) {
weight_change_object(from_obj, -amount); weight_change_object(from_obj, -amount);
@@ -1159,7 +1157,7 @@ ACMD(do_pour)
weight_change_object(to_obj, amount); /* Add weight */ weight_change_object(to_obj, amount); /* Add weight */
} }
static void wear_message(char_data *ch, obj_data *obj, int where) static void wear_message(struct char_data *ch, struct obj_data *obj, int where)
{ {
const char *wear_messages[][2] = { const char *wear_messages[][2] = {
{"$n lights $p and holds it.", {"$n lights $p and holds it.",
@@ -1221,7 +1219,7 @@ static void wear_message(char_data *ch, obj_data *obj, int where)
act(wear_messages[where][1], FALSE, ch, obj, 0, TO_CHAR); act(wear_messages[where][1], FALSE, ch, obj, 0, TO_CHAR);
} }
static void perform_wear(char_data *ch, obj_data *obj, int where) static void perform_wear(struct char_data *ch, struct obj_data *obj, int where)
{ {
/* /*
* ITEM_WEAR_TAKE is used for objects that do not require special bits * ITEM_WEAR_TAKE is used for objects that do not require special bits
@@ -1282,7 +1280,7 @@ static void perform_wear(char_data *ch, obj_data *obj, int where)
equip_char(ch, obj, where); equip_char(ch, obj, where);
} }
int find_eq_pos(char_data *ch, obj_data *obj, char *arg) int find_eq_pos(struct char_data *ch, struct obj_data *obj, char *arg)
{ {
int where = -1; int where = -1;
@@ -1309,30 +1307,18 @@ int find_eq_pos(char_data *ch, obj_data *obj, char *arg)
}; };
if (!arg || !*arg) { if (!arg || !*arg) {
if (CAN_WEAR(obj, ITEM_WEAR_FINGER)) if (CAN_WEAR(obj, ITEM_WEAR_FINGER)) where = WEAR_FINGER_R;
where = WEAR_FINGER_R; if (CAN_WEAR(obj, ITEM_WEAR_NECK)) where = WEAR_NECK_1;
if (CAN_WEAR(obj, ITEM_WEAR_NECK)) if (CAN_WEAR(obj, ITEM_WEAR_BODY)) where = WEAR_BODY;
where = WEAR_NECK_1; if (CAN_WEAR(obj, ITEM_WEAR_HEAD)) where = WEAR_HEAD;
if (CAN_WEAR(obj, ITEM_WEAR_BODY)) if (CAN_WEAR(obj, ITEM_WEAR_LEGS)) where = WEAR_LEGS;
where = WEAR_BODY; if (CAN_WEAR(obj, ITEM_WEAR_FEET)) where = WEAR_FEET;
if (CAN_WEAR(obj, ITEM_WEAR_HEAD)) if (CAN_WEAR(obj, ITEM_WEAR_HANDS)) where = WEAR_HANDS;
where = WEAR_HEAD; if (CAN_WEAR(obj, ITEM_WEAR_ARMS)) where = WEAR_ARMS;
if (CAN_WEAR(obj, ITEM_WEAR_LEGS)) if (CAN_WEAR(obj, ITEM_WEAR_SHIELD)) where = WEAR_SHIELD;
where = WEAR_LEGS; if (CAN_WEAR(obj, ITEM_WEAR_ABOUT)) where = WEAR_ABOUT;
if (CAN_WEAR(obj, ITEM_WEAR_FEET)) if (CAN_WEAR(obj, ITEM_WEAR_WAIST)) where = WEAR_WAIST;
where = WEAR_FEET; if (CAN_WEAR(obj, ITEM_WEAR_WRIST)) where = WEAR_WRIST_R;
if (CAN_WEAR(obj, ITEM_WEAR_HANDS))
where = WEAR_HANDS;
if (CAN_WEAR(obj, ITEM_WEAR_ARMS))
where = WEAR_ARMS;
if (CAN_WEAR(obj, ITEM_WEAR_SHIELD))
where = WEAR_SHIELD;
if (CAN_WEAR(obj, ITEM_WEAR_ABOUT))
where = WEAR_ABOUT;
if (CAN_WEAR(obj, ITEM_WEAR_WAIST))
where = WEAR_WAIST;
if (CAN_WEAR(obj, ITEM_WEAR_WRIST))
where = WEAR_WRIST_R;
} else if ((where = search_block(arg, keywords, FALSE)) < 0) } else if ((where = search_block(arg, keywords, FALSE)) < 0)
send_to_char(ch, "'%s'? What part of your body is THAT?\r\n", arg); send_to_char(ch, "'%s'? What part of your body is THAT?\r\n", arg);
@@ -1343,7 +1329,7 @@ ACMD(do_wear)
{ {
char arg1[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH];
obj_data *obj, *next_obj; struct obj_data *obj, *next_obj;
int where, dotmode, items_worn = 0; int where, dotmode, items_worn = 0;
two_arguments(argument, arg1, arg2); two_arguments(argument, arg1, arg2);
@@ -1407,7 +1393,7 @@ ACMD(do_wear)
ACMD(do_wield) ACMD(do_wield)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *obj; struct obj_data *obj;
one_argument(argument, arg); one_argument(argument, arg);
@@ -1430,7 +1416,7 @@ ACMD(do_wield)
ACMD(do_grab) ACMD(do_grab)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *obj; struct obj_data *obj;
one_argument(argument, arg); one_argument(argument, arg);
@@ -1454,9 +1440,9 @@ ACMD(do_grab)
} }
} }
static void perform_remove(char_data *ch, int pos) static void perform_remove(struct char_data *ch, int pos)
{ {
obj_data *obj; struct obj_data *obj;
if (!(obj = GET_EQ(ch, pos))) if (!(obj = GET_EQ(ch, pos)))
log("SYSERR: perform_remove: bad pos %d passed.", pos); log("SYSERR: perform_remove: bad pos %d passed.", pos);
@@ -1523,7 +1509,7 @@ ACMD(do_remove)
ACMD(do_sac) ACMD(do_sac)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *j, *jj, *next_thing2; struct obj_data *j, *jj, *next_thing2;
one_argument(argument, arg); one_argument(argument, arg);
@@ -1532,8 +1518,7 @@ ACMD(do_sac)
return; return;
} }
if (!(j = get_obj_in_list_vis(ch, arg, NULL, world[IN_ROOM(ch)].contents)) && (!( if (!(j = get_obj_in_list_vis(ch, arg, NULL, world[IN_ROOM(ch)].contents)) && (!(j = get_obj_in_list_vis(ch, arg, NULL, ch->carrying)))) {
j = get_obj_in_list_vis(ch, arg, NULL, ch->carrying)))) {
send_to_char(ch, "It doesn't seem to be here.\n\r"); send_to_char(ch, "It doesn't seem to be here.\n\r");
return; return;
} }
@@ -1547,21 +1532,18 @@ ACMD(do_sac)
switch (rand_number(0, 5)) { switch (rand_number(0, 5)) {
case 0: case 0:
send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive one gold coin for your humility.\r\n", send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
GET_OBJ_SHORT(j));
increase_gold(ch, 1); increase_gold(ch, 1);
break; break;
case 1: case 1:
send_to_char(ch, "You sacrifice %s to the Gods.\r\nThe Gods ignore your sacrifice.\r\n", GET_OBJ_SHORT(j)); send_to_char(ch, "You sacrifice %s to the Gods.\r\nThe Gods ignore your sacrifice.\r\n", GET_OBJ_SHORT(j));
break; break;
case 2: case 2:
send_to_char(ch, "You sacrifice %s to the Gods.\r\nThe gods give you %d experience points.\r\n", GET_OBJ_SHORT(j), send_to_char(ch, "You sacrifice %s to the Gods.\r\nThe gods give you %d experience points.\r\n", GET_OBJ_SHORT(j), 1+2*GET_OBJ_LEVEL(j));
1 + 2 * GET_OBJ_LEVEL(j));
GET_EXP(ch) += (1+2*GET_OBJ_LEVEL(j)); GET_EXP(ch) += (1+2*GET_OBJ_LEVEL(j));
break; break;
case 3: case 3:
send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive %d experience points.\r\n", GET_OBJ_SHORT(j), send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive %d experience points.\r\n", GET_OBJ_SHORT(j), 1+GET_OBJ_LEVEL(j));
1 + GET_OBJ_LEVEL(j));
GET_EXP(ch) += (1+GET_OBJ_LEVEL(j)); GET_EXP(ch) += (1+GET_OBJ_LEVEL(j));
break; break;
case 4: case 4:
@@ -1573,8 +1555,7 @@ ACMD(do_sac)
increase_gold(ch, (1+2*GET_OBJ_LEVEL(j))); increase_gold(ch, (1+2*GET_OBJ_LEVEL(j)));
break; break;
default: default:
send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive one gold coin for your humility.\r\n", send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive one gold coin for your humility.\r\n",GET_OBJ_SHORT(j));
GET_OBJ_SHORT(j));
increase_gold(ch, 1); increase_gold(ch, 1);
break; break;
} }

View File

@@ -27,18 +27,18 @@
/* local only functions */ /* local only functions */
/* do_simple_move utility functions */ /* do_simple_move utility functions */
static int has_boat(char_data *ch); static int has_boat(struct char_data *ch);
/* do_gen_door utility functions */ /* do_gen_door utility functions */
static int find_door(char_data *ch, const char *type, char *dir, const char *cmdname); static int find_door(struct char_data *ch, const char *type, char *dir, const char *cmdname);
static int has_key(char_data *ch, obj_vnum key); static int has_key(struct char_data *ch, obj_vnum key);
static void do_doorcmd(char_data *ch, obj_data *obj, int door, int scmd); static void do_doorcmd(struct char_data *ch, struct obj_data *obj, int door, int scmd);
static int ok_pick(char_data *ch, obj_vnum keynum, int pickproof, int scmd); static int ok_pick(struct char_data *ch, obj_vnum keynum, int pickproof, int scmd);
/* simple function to determine if char can walk on water */ /* simple function to determine if char can walk on water */
static int has_boat(char_data *ch) static int has_boat(struct char_data *ch)
{ {
obj_data *obj; struct obj_data *obj;
int i; int i;
if (GET_LEVEL(ch) > LVL_IMMORT) if (GET_LEVEL(ch) > LVL_IMMORT)
@@ -61,9 +61,9 @@ static int has_boat(char_data *ch)
} }
/* Simple function to determine if char can fly. */ /* Simple function to determine if char can fly. */
static int has_flight(char_data *ch) static int has_flight(struct char_data *ch)
{ {
obj_data *obj; struct obj_data *obj;
int i; int i;
if (GET_LEVEL(ch) > LVL_IMMORT) if (GET_LEVEL(ch) > LVL_IMMORT)
@@ -86,9 +86,9 @@ static int has_flight(char_data *ch)
} }
/* Simple function to determine if char can scuba. */ /* Simple function to determine if char can scuba. */
static int has_scuba(char_data *ch) static int has_scuba(struct char_data *ch)
{ {
obj_data *obj; struct obj_data *obj;
int i; int i;
if (GET_LEVEL(ch) > LVL_IMMORT) if (GET_LEVEL(ch) > LVL_IMMORT)
@@ -126,7 +126,7 @@ static int has_scuba(char_data *ch)
* @param need_specials_check If TRUE will cause * @param need_specials_check If TRUE will cause
* @retval int 1 for a successful move (ch is now in a new location) * @retval int 1 for a successful move (ch is now in a new location)
* or 0 for a failed move (ch is still in the original location). */ * or 0 for a failed move (ch is still in the original location). */
int do_simple_move(char_data *ch, int dir, int need_specials_check) int do_simple_move(struct char_data *ch, int dir, int need_specials_check)
{ {
/* Begin Local variable definitions */ /* Begin Local variable definitions */
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
@@ -166,7 +166,8 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
return 0; return 0;
/* Charm effect: Does it override the movement? */ /* Charm effect: Does it override the movement? */
if (AFF_FLAGGED(ch, AFF_CHARM) && ch->master && was_in == IN_ROOM(ch->master)) { if (AFF_FLAGGED(ch, AFF_CHARM) && ch->master && was_in == IN_ROOM(ch->master))
{
send_to_char(ch, "The thought of leaving your master makes you weep.\r\n"); send_to_char(ch, "The thought of leaving your master makes you weep.\r\n");
act("$n bursts into tears.", FALSE, ch, 0, 0, TO_ROOM); act("$n bursts into tears.", FALSE, ch, 0, 0, TO_ROOM);
return (0); return (0);
@@ -174,23 +175,28 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
/* Water, No Swimming Rooms: Does the deep water prevent movement? */ /* Water, No Swimming Rooms: Does the deep water prevent movement? */
if ((SECT(was_in) == SECT_WATER_NOSWIM) || if ((SECT(was_in) == SECT_WATER_NOSWIM) ||
(SECT(going_to) == SECT_WATER_NOSWIM)) { (SECT(going_to) == SECT_WATER_NOSWIM))
if (!has_boat(ch)) { {
if (!has_boat(ch))
{
send_to_char(ch, "You need a boat to go there.\r\n"); send_to_char(ch, "You need a boat to go there.\r\n");
return (0); return (0);
} }
} }
/* Flying Required: Does lack of flying prevent movement? */ /* Flying Required: Does lack of flying prevent movement? */
if ((SECT(was_in) == SECT_FLYING) || (SECT(going_to) == SECT_FLYING)) { if ((SECT(was_in) == SECT_FLYING) || (SECT(going_to) == SECT_FLYING))
if (!has_flight(ch)) { {
if (!has_flight(ch))
{
send_to_char(ch, "You need to be flying to go there!\r\n"); send_to_char(ch, "You need to be flying to go there!\r\n");
return (0); return (0);
} }
} }
/* Underwater Room: Does lack of underwater breathing prevent movement? */ /* Underwater Room: Does lack of underwater breathing prevent movement? */
if ((SECT(was_in) == SECT_UNDERWATER) || (SECT(going_to) == SECT_UNDERWATER)) { if ((SECT(was_in) == SECT_UNDERWATER) || (SECT(going_to) == SECT_UNDERWATER))
{
if (!has_scuba(ch) && !IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)) { if (!has_scuba(ch) && !IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)) {
send_to_char(ch, "You need to be able to breathe water to go there!\r\n"); send_to_char(ch, "You need to be able to breathe water to go there!\r\n");
return (0); return (0);
@@ -198,8 +204,10 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
} }
/* Houses: Can the player walk into the house? */ /* Houses: Can the player walk into the house? */
if (ROOM_FLAGGED(was_in, ROOM_ATRIUM)) { if (ROOM_FLAGGED(was_in, ROOM_ATRIUM))
if (!House_can_enter(ch, GET_ROOM_VNUM(going_to))) { {
if (!House_can_enter(ch, GET_ROOM_VNUM(going_to)))
{
send_to_char(ch, "That's private property -- no trespassing!\r\n"); send_to_char(ch, "That's private property -- no trespassing!\r\n");
return (0); return (0);
} }
@@ -215,15 +223,15 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
send_to_char(ch, "A mysterious barrier forces you back! That area is off-limits.\r\n"); send_to_char(ch, "A mysterious barrier forces you back! That area is off-limits.\r\n");
return (0); return (0);
} }
if (ZONE_FLAGGED(GET_ROOM_ZONE(going_to), ZONE_NOIMMORT) && (GET_LEVEL(ch) >= LVL_IMMORT) && ( if (ZONE_FLAGGED(GET_ROOM_ZONE(going_to), ZONE_NOIMMORT) && (GET_LEVEL(ch) >= LVL_IMMORT) && (GET_LEVEL(ch) < LVL_GRGOD)) {
GET_LEVEL(ch) < LVL_GRGOD)) {
send_to_char(ch, "A mysterious barrier forces you back! That area is off-limits.\r\n"); send_to_char(ch, "A mysterious barrier forces you back! That area is off-limits.\r\n");
return (0); return (0);
} }
/* Room Size Capacity: Is the room full of people already? */ /* Room Size Capacity: Is the room full of people already? */
if (ROOM_FLAGGED(going_to, ROOM_TUNNEL) && if (ROOM_FLAGGED(going_to, ROOM_TUNNEL) &&
num_pc_in_room(&(world[going_to])) >= CONFIG_TUNNEL_SIZE) { num_pc_in_room(&(world[going_to])) >= CONFIG_TUNNEL_SIZE)
{
if (CONFIG_TUNNEL_SIZE > 1) if (CONFIG_TUNNEL_SIZE > 1)
send_to_char(ch, "There isn't enough room for you to go there!\r\n"); send_to_char(ch, "There isn't enough room for you to go there!\r\n");
else else
@@ -232,7 +240,8 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
} }
/* Room Level Requirements: Is ch privileged enough to enter the room? */ /* Room Level Requirements: Is ch privileged enough to enter the room? */
if (ROOM_FLAGGED(going_to, ROOM_GODROOM) && GET_LEVEL(ch) < LVL_GOD) { if (ROOM_FLAGGED(going_to, ROOM_GODROOM) && GET_LEVEL(ch) < LVL_GOD)
{
send_to_char(ch, "You aren't godly enough to use that room!\r\n"); send_to_char(ch, "You aren't godly enough to use that room!\r\n");
return (0); return (0);
} }
@@ -244,7 +253,8 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
movement_loss[SECT(going_to)]) / 2; movement_loss[SECT(going_to)]) / 2;
/* Move Point Requirement Check */ /* Move Point Requirement Check */
if (GET_MOVE(ch) < need_movement && !IS_NPC(ch)) { if (GET_MOVE(ch) < need_movement && !IS_NPC(ch))
{
if (need_specials_check && ch->master) if (need_specials_check && ch->master)
send_to_char(ch, "You are too exhausted to follow.\r\n"); send_to_char(ch, "You are too exhausted to follow.\r\n");
else else
@@ -264,7 +274,8 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
GET_MOVE(ch) -= need_movement; GET_MOVE(ch) -= need_movement;
/* Generate the leave message and display to others in the was_in room. */ /* Generate the leave message and display to others in the was_in room. */
if (!AFF_FLAGGED(ch, AFF_SNEAK)) { if (!AFF_FLAGGED(ch, AFF_SNEAK))
{
snprintf(leave_message, sizeof(leave_message), "$n leaves %s.", dirs[dir]); snprintf(leave_message, sizeof(leave_message), "$n leaves %s.", dirs[dir]);
act(leave_message, TRUE, ch, 0, 0, TO_ROOM); act(leave_message, TRUE, ch, 0, 0, TO_ROOM);
} }
@@ -296,9 +307,9 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
look_at_room(ch, 0); look_at_room(ch, 0);
/* ... and Kill the player if the room is a death trap. */ /* ... and Kill the player if the room is a death trap. */
if (ROOM_FLAGGED(going_to, ROOM_DEATH) && GET_LEVEL(ch) < LVL_IMMORT) { if (ROOM_FLAGGED(going_to, ROOM_DEATH) && GET_LEVEL(ch) < LVL_IMMORT)
mudlog(BRF, LVL_IMMORT, TRUE, "%s hit death trap #%d (%s)", GET_NAME(ch), GET_ROOM_VNUM(going_to), {
world[going_to].name); mudlog(BRF, LVL_IMMORT, TRUE, "%s hit death trap #%d (%s)", GET_NAME(ch), GET_ROOM_VNUM(going_to), world[going_to].name);
death_cry(ch); death_cry(ch);
extract_char(ch); extract_char(ch);
return (0); return (0);
@@ -308,13 +319,15 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
/* Fire memory and greet triggers, check and see if the greet trigger /* Fire memory and greet triggers, check and see if the greet trigger
* prevents movement, and if so, move the player back to the previous room. */ * prevents movement, and if so, move the player back to the previous room. */
entry_memory_mtrigger(ch); entry_memory_mtrigger(ch);
if (!greet_mtrigger(ch, dir)) { if (!greet_mtrigger(ch, dir))
{
char_from_room(ch); char_from_room(ch);
char_to_room(ch, was_in); char_to_room(ch, was_in);
look_at_room(ch, 0); look_at_room(ch, 0);
/* Failed move, return a failure */ /* Failed move, return a failure */
return (0); return (0);
} else }
else
greet_memory_mtrigger(ch); greet_memory_mtrigger(ch);
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
/* End: Post-move operations. */ /* End: Post-move operations. */
@@ -324,7 +337,7 @@ int do_simple_move(char_data *ch, int dir, int need_specials_check)
return (1); return (1);
} }
int perform_move(char_data *ch, int dir, int need_specials_check) int perform_move(struct char_data *ch, int dir, int need_specials_check)
{ {
room_rnum was_in; room_rnum was_in;
struct follow_type *k, *next; struct follow_type *k, *next;
@@ -335,8 +348,7 @@ int perform_move(char_data *ch, int dir, int need_specials_check)
send_to_char(ch, "Alas, you cannot go that way...\r\n"); send_to_char(ch, "Alas, you cannot go that way...\r\n");
else if ((!EXIT(ch, dir) && !buildwalk(ch, dir)) || EXIT(ch, dir)->to_room == NOWHERE) else if ((!EXIT(ch, dir) && !buildwalk(ch, dir)) || EXIT(ch, dir)->to_room == NOWHERE)
send_to_char(ch, "Alas, you cannot go that way...\r\n"); send_to_char(ch, "Alas, you cannot go that way...\r\n");
else if (EXIT_FLAGGED(EXIT(ch, dir), EX_CLOSED) && (GET_LEVEL(ch) < LVL_IMMORT || ( else if (EXIT_FLAGGED(EXIT(ch, dir), EX_CLOSED) && (GET_LEVEL(ch) < LVL_IMMORT || (!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)))) {
!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)))) {
if (EXIT(ch, dir)->keyword) if (EXIT(ch, dir)->keyword)
send_to_char(ch, "The %s seems to be closed.\r\n", fname(EXIT(ch, dir)->keyword)); send_to_char(ch, "The %s seems to be closed.\r\n", fname(EXIT(ch, dir)->keyword));
else else
@@ -368,7 +380,7 @@ ACMD(do_move)
perform_move(ch, subcmd, 0); perform_move(ch, subcmd, 0);
} }
static int find_door(char_data *ch, const char *type, char *dir, const char *cmdname) static int find_door(struct char_data *ch, const char *type, char *dir, const char *cmdname)
{ {
int door; int door;
@@ -398,18 +410,24 @@ static int find_door(char_data *ch, const char *type, char *dir, const char *cmd
send_to_char(ch, "What is it you want to %s?\r\n", cmdname); send_to_char(ch, "What is it you want to %s?\r\n", cmdname);
return (-1); return (-1);
} }
for (door = 0; door < DIR_COUNT; door++) { for (door = 0; door < DIR_COUNT; door++)
if (EXIT(ch, door)) { {
if (EXIT(ch, door)->keyword) { if (EXIT(ch, door))
if (isname(type, EXIT(ch, door)->keyword)) { {
if (EXIT(ch, door)->keyword)
{
if (isname(type, EXIT(ch, door)->keyword))
{
if ((!IS_NPC(ch)) && (!PRF_FLAGGED(ch, PRF_AUTODOOR))) if ((!IS_NPC(ch)) && (!PRF_FLAGGED(ch, PRF_AUTODOOR)))
return door; return door;
else if (is_abbrev(cmdname, "open")) { else if (is_abbrev(cmdname, "open"))
{
if (IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED)) if (IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED))
return door; return door;
else if (IS_SET(EXIT(ch, door)->exit_info, EX_LOCKED)) else if (IS_SET(EXIT(ch, door)->exit_info, EX_LOCKED))
return door; return door;
} else if ((is_abbrev(cmdname, "close")) && (!(IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED)))) }
else if ((is_abbrev(cmdname, "close")) && (!(IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED))) )
return door; return door;
else if ((is_abbrev(cmdname, "lock")) && (!(IS_SET(EXIT(ch, door)->exit_info, EX_LOCKED))) ) else if ((is_abbrev(cmdname, "lock")) && (!(IS_SET(EXIT(ch, door)->exit_info, EX_LOCKED))) )
return door; return door;
@@ -439,9 +457,9 @@ static int find_door(char_data *ch, const char *type, char *dir, const char *cmd
} }
} }
int has_key(char_data *ch, obj_vnum key) int has_key(struct char_data *ch, obj_vnum key)
{ {
obj_data *o; struct obj_data *o;
if (key == NOTHING) if (key == NOTHING)
return (0); return (0);
@@ -498,7 +516,7 @@ static const int flags_door[] =
(TOGGLE_BIT(GET_OBJ_VAL(obj, 1), CONT_LOCKED)) :\ (TOGGLE_BIT(GET_OBJ_VAL(obj, 1), CONT_LOCKED)) :\
(TOGGLE_BIT(EXITN(room, door)->exit_info, EX_LOCKED))) (TOGGLE_BIT(EXITN(room, door)->exit_info, EX_LOCKED)))
static void do_doorcmd(char_data *ch, obj_data *obj, int door, int scmd) static void do_doorcmd(struct char_data *ch, struct obj_data *obj, int door, int scmd)
{ {
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
size_t len; size_t len;
@@ -569,7 +587,7 @@ static void do_doorcmd(char_data *ch, obj_data *obj, int door, int scmd)
scmd == SCMD_CLOSE ? "d" : "ed"); scmd == SCMD_CLOSE ? "d" : "ed");
} }
static int ok_pick(char_data *ch, obj_vnum keynum, int pickproof, int scmd) static int ok_pick(struct char_data *ch, obj_vnum keynum, int pickproof, int scmd)
{ {
int percent, skill_lvl; int percent, skill_lvl;
@@ -610,8 +628,8 @@ ACMD(do_gen_door)
int door = -1; int door = -1;
obj_vnum keynum; obj_vnum keynum;
char type[MAX_INPUT_LENGTH], dir[MAX_INPUT_LENGTH]; char type[MAX_INPUT_LENGTH], dir[MAX_INPUT_LENGTH];
obj_data *obj = NULL; struct obj_data *obj = NULL;
char_data *victim = NULL; struct char_data *victim = NULL;
skip_spaces(&argument); skip_spaces(&argument);
if (!*argument) { if (!*argument) {
@@ -637,15 +655,17 @@ ACMD(do_gen_door)
send_to_char(ch, "But it's currently open!\r\n"); send_to_char(ch, "But it's currently open!\r\n");
else if (!(DOOR_IS_LOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_LOCKED)) else if (!(DOOR_IS_LOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_LOCKED))
send_to_char(ch, "Oh.. it wasn't locked, after all..\r\n"); send_to_char(ch, "Oh.. it wasn't locked, after all..\r\n");
else if (!(DOOR_IS_UNLOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_UNLOCKED) && (( else if (!(DOOR_IS_UNLOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_UNLOCKED) && ((!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOKEY))) && (has_key(ch, keynum)) )
!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOKEY))) && (has_key(ch, keynum))) { {
send_to_char(ch, "It is locked, but you have the key.\r\n"); send_to_char(ch, "It is locked, but you have the key.\r\n");
do_doorcmd(ch, obj, door, SCMD_UNLOCK); do_doorcmd(ch, obj, door, SCMD_UNLOCK);
do_doorcmd(ch, obj, door, subcmd); do_doorcmd(ch, obj, door, subcmd);
} else if (!(DOOR_IS_UNLOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_UNLOCKED) && (( }
!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOKEY))) && (!has_key(ch, keynum))) { else if (!(DOOR_IS_UNLOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_UNLOCKED) && ((!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOKEY))) && (!has_key(ch, keynum)) )
{
send_to_char(ch, "It is locked, and you do not have the key!\r\n"); send_to_char(ch, "It is locked, and you do not have the key!\r\n");
} else if (!(DOOR_IS_UNLOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_UNLOCKED) && }
else if (!(DOOR_IS_UNLOCKED(ch, obj, door)) && IS_SET(flags_door[subcmd], NEED_UNLOCKED) &&
(GET_LEVEL(ch) < LVL_IMMORT || (!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)))) (GET_LEVEL(ch) < LVL_IMMORT || (!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE))))
send_to_char(ch, "It seems to be locked.\r\n"); send_to_char(ch, "It seems to be locked.\r\n");
else if (!has_key(ch, keynum) && (GET_LEVEL(ch) < LVL_GOD) && ((subcmd == SCMD_LOCK) || (subcmd == SCMD_UNLOCK))) else if (!has_key(ch, keynum) && (GET_LEVEL(ch) < LVL_GOD) && ((subcmd == SCMD_LOCK) || (subcmd == SCMD_UNLOCK)))
@@ -747,8 +767,8 @@ ACMD(do_stand)
ACMD(do_sit) ACMD(do_sit)
{ {
char arg[MAX_STRING_LENGTH]; char arg[MAX_STRING_LENGTH];
obj_data *furniture; struct obj_data *furniture;
char_data *tempch; struct char_data *tempch;
int found; int found;
one_argument(argument, arg); one_argument(argument, arg);
@@ -873,7 +893,7 @@ ACMD(do_sleep)
ACMD(do_wake) ACMD(do_wake)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
int self = 0; int self = 0;
one_argument(argument, arg); one_argument(argument, arg);
@@ -912,7 +932,7 @@ ACMD(do_wake)
ACMD(do_follow) ACMD(do_follow)
{ {
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
char_data *leader; struct char_data *leader;
one_argument(argument, buf); one_argument(argument, buf);

View File

@@ -24,7 +24,7 @@
ACMD(do_assist) ACMD(do_assist)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *helpee, *opponent; struct char_data *helpee, *opponent;
if (FIGHTING(ch)) { if (FIGHTING(ch)) {
send_to_char(ch, "You're already fighting! How can you assist someone else?\r\n"); send_to_char(ch, "You're already fighting! How can you assist someone else?\r\n");
@@ -68,7 +68,7 @@ ACMD(do_assist)
ACMD(do_hit) ACMD(do_hit)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
one_argument(argument, arg); one_argument(argument, arg);
@@ -88,8 +88,7 @@ ACMD(do_hit)
if ((GET_POS(ch) == POS_STANDING) && (vict != FIGHTING(ch))) { if ((GET_POS(ch) == POS_STANDING) && (vict != FIGHTING(ch))) {
if (GET_DEX(ch) > GET_DEX(vict) || (GET_DEX(ch) == GET_DEX(vict) && rand_number(1, 2) == 1)) /* if faster */ if (GET_DEX(ch) > GET_DEX(vict) || (GET_DEX(ch) == GET_DEX(vict) && rand_number(1, 2) == 1)) /* if faster */
hit(ch, vict, TYPE_UNDEFINED); /* first */ hit(ch, vict, TYPE_UNDEFINED); /* first */
else else hit(vict, ch, TYPE_UNDEFINED); /* or the victim is first */
hit(vict, ch, TYPE_UNDEFINED); /* or the victim is first */
WAIT_STATE(ch, PULSE_VIOLENCE + 2); WAIT_STATE(ch, PULSE_VIOLENCE + 2);
} else } else
send_to_char(ch, "You're fighting the best you can!\r\n"); send_to_char(ch, "You're fighting the best you can!\r\n");
@@ -99,7 +98,7 @@ ACMD(do_hit)
ACMD(do_kill) ACMD(do_kill)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
if (GET_LEVEL(ch) < LVL_GRGOD || IS_NPC(ch) || !PRF_FLAGGED(ch, PRF_NOHASSLE)) { if (GET_LEVEL(ch) < LVL_GRGOD || IS_NPC(ch) || !PRF_FLAGGED(ch, PRF_NOHASSLE)) {
do_hit(ch, argument, cmd, subcmd); do_hit(ch, argument, cmd, subcmd);
@@ -126,7 +125,7 @@ ACMD(do_kill)
ACMD(do_backstab) ACMD(do_backstab)
{ {
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
int percent, prob; int percent, prob;
if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_BACKSTAB)) { if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_BACKSTAB)) {
@@ -180,7 +179,7 @@ ACMD(do_order)
{ {
char name[MAX_INPUT_LENGTH], message[MAX_INPUT_LENGTH]; char name[MAX_INPUT_LENGTH], message[MAX_INPUT_LENGTH];
bool found = FALSE; bool found = FALSE;
char_data *vict; struct char_data *vict;
struct follow_type *k; struct follow_type *k;
half_chop(argument, name, message); half_chop(argument, name, message);
@@ -233,7 +232,7 @@ ACMD(do_order)
ACMD(do_flee) ACMD(do_flee)
{ {
int i, attempt, loss; int i, attempt, loss;
char_data *was_fighting; struct char_data *was_fighting;
if (GET_POS(ch) < POS_FIGHTING) { if (GET_POS(ch) < POS_FIGHTING) {
send_to_char(ch, "You are in pretty bad shape, unable to flee!\r\n"); send_to_char(ch, "You are in pretty bad shape, unable to flee!\r\n");
@@ -269,7 +268,7 @@ ACMD(do_flee)
ACMD(do_bash) ACMD(do_bash)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
int percent, prob; int percent, prob;
one_argument(argument, arg); one_argument(argument, arg);
@@ -331,7 +330,7 @@ ACMD(do_bash)
ACMD(do_rescue) ACMD(do_rescue)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict, *tmp_ch; struct char_data *vict, *tmp_ch;
int percent, prob; int percent, prob;
if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_RESCUE)) { if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_RESCUE)) {
@@ -394,7 +393,7 @@ ACMD(do_rescue)
EVENTFUNC(event_whirlwind) EVENTFUNC(event_whirlwind)
{ {
char_data *ch, *tch; struct char_data *ch, *tch;
struct mud_event_data *pMudEvent; struct mud_event_data *pMudEvent;
struct list_data *room_list; struct list_data *room_list;
int count; int count;
@@ -406,7 +405,7 @@ EVENTFUNC(event_whirlwind)
/* For the sake of simplicity, we will place the event data in easily /* For the sake of simplicity, we will place the event data in easily
* referenced pointers */ * referenced pointers */
pMudEvent = (struct mud_event_data *) event_obj; pMudEvent = (struct mud_event_data *) event_obj;
ch = (char_data *)pMudEvent->pStruct; ch = (struct char_data *) pMudEvent->pStruct;
/* When using a list, we have to make sure to allocate the list as it /* When using a list, we have to make sure to allocate the list as it
* uses dynamic memory */ * uses dynamic memory */
@@ -492,7 +491,7 @@ ACMD(do_whirlwind)
ACMD(do_kick) ACMD(do_kick)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
int percent, prob; int percent, prob;
if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_KICK)) { if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_KICK)) {
@@ -510,8 +509,6 @@ ACMD(do_kick)
return; return;
} }
} }
log("ch class = %d vict class = %d", GET_CLASS(ch), GET_CLASS(vict));
if (vict == ch) { if (vict == ch) {
send_to_char(ch, "Aren't we funny today...\r\n"); send_to_char(ch, "Aren't we funny today...\r\n");
return; return;
@@ -531,10 +528,11 @@ ACMD(do_kick)
ACMD(do_bandage) ACMD(do_bandage)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data * vict;
int percent, prob; int percent, prob;
if (!GET_SKILL(ch, SKILL_BANDAGE)) { if (!GET_SKILL(ch, SKILL_BANDAGE))
{
send_to_char(ch, "You are unskilled in the art of bandaging.\r\n"); send_to_char(ch, "You are unskilled in the art of bandaging.\r\n");
return; return;
} }

View File

@@ -32,8 +32,8 @@
/* Local defined utility functions */ /* Local defined utility functions */
/* do_group utility functions */ /* do_group utility functions */
static void print_group(char_data *ch); static void print_group(struct char_data *ch);
static void display_group_list(char_data *ch); static void display_group_list(struct char_data * ch);
ACMD(do_quit) ACMD(do_quit)
{ {
@@ -145,8 +145,8 @@ ACMD(do_hide)
ACMD(do_steal) ACMD(do_steal)
{ {
char_data *vict; struct char_data *vict;
obj_data *obj; struct obj_data *obj;
char vict_name[MAX_INPUT_LENGTH], obj_name[MAX_INPUT_LENGTH]; char vict_name[MAX_INPUT_LENGTH], obj_name[MAX_INPUT_LENGTH];
int percent, gold, eq_pos, pcsteal = 0, ohoh = 0; int percent, gold, eq_pos, pcsteal = 0, ohoh = 0;
@@ -315,13 +315,13 @@ ACMD(do_title)
} }
} }
static void print_group(char_data *ch) static void print_group(struct char_data *ch)
{ {
char_data *k; struct char_data * k;
send_to_char(ch, "Your group consists of:\r\n"); send_to_char(ch, "Your group consists of:\r\n");
while ((k = (char_data *)simple_list(ch->group->members)) != NULL) while ((k = (struct char_data *) simple_list(ch->group->members)) != NULL)
send_to_char(ch, "%-*s: %s[%4d/%-4d]H [%4d/%-4d]M [%4d/%-4d]V%s\r\n", send_to_char(ch, "%-*s: %s[%4d/%-4d]H [%4d/%-4d]M [%4d/%-4d]V%s\r\n",
count_color_chars(GET_NAME(k))+22, GET_NAME(k), count_color_chars(GET_NAME(k))+22, GET_NAME(k),
GROUP_LEADER(GROUP(ch)) == k ? CBGRN(ch, C_NRM) : CCGRN(ch, C_NRM), GROUP_LEADER(GROUP(ch)) == k ? CBGRN(ch, C_NRM) : CCGRN(ch, C_NRM),
@@ -331,7 +331,7 @@ static void print_group(char_data *ch)
CCNRM(ch, C_NRM)); CCNRM(ch, C_NRM));
} }
static void display_group_list(char_data *ch) static void display_group_list(struct char_data * ch)
{ {
struct group_data * group; struct group_data * group;
int count = 0; int count = 0;
@@ -347,8 +347,7 @@ static void display_group_list(char_data *ch)
send_to_char(ch, "%-2d) %s%-12s %-2d %s%s\r\n", send_to_char(ch, "%-2d) %s%-12s %-2d %s%s\r\n",
++count, ++count,
IS_SET(GROUP_FLAGS(group), GROUP_OPEN) ? CCGRN(ch, C_NRM) : CCRED(ch, C_NRM), IS_SET(GROUP_FLAGS(group), GROUP_OPEN) ? CCGRN(ch, C_NRM) : CCRED(ch, C_NRM),
GET_NAME(GROUP_LEADER(group)), group->members->iSize, GET_NAME(GROUP_LEADER(group)), group->members->iSize, zone_table[world[IN_ROOM(GROUP_LEADER(group))].zone].name,
zone_table[world[IN_ROOM(GROUP_LEADER(group))].zone].name,
CCNRM(ch, C_NRM)); CCNRM(ch, C_NRM));
else else
send_to_char(ch, "%-2d) Hidden\r\n", ++count); send_to_char(ch, "%-2d) Hidden\r\n", ++count);
@@ -370,7 +369,7 @@ static void display_group_list(char_data *ch)
ACMD(do_group) ACMD(do_group)
{ {
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
char_data *vict; struct char_data *vict;
argument = one_argument(argument, buf); argument = one_argument(argument, buf);
@@ -460,12 +459,10 @@ ACMD(do_group)
} }
if (is_abbrev(argument, "open")) { if (is_abbrev(argument, "open")) {
TOGGLE_BIT(GROUP_FLAGS(GROUP(ch)), GROUP_OPEN); TOGGLE_BIT(GROUP_FLAGS(GROUP(ch)), GROUP_OPEN);
send_to_char(ch, "The group is now %s to new members.\r\n", send_to_char(ch, "The group is now %s to new members.\r\n", IS_SET(GROUP_FLAGS(GROUP(ch)), GROUP_OPEN) ? "open" : "closed");
IS_SET(GROUP_FLAGS(GROUP(ch)), GROUP_OPEN) ? "open" : "closed");
} else if (is_abbrev(argument, "anonymous")) { } else if (is_abbrev(argument, "anonymous")) {
TOGGLE_BIT(GROUP_FLAGS(GROUP(ch)), GROUP_ANON); TOGGLE_BIT(GROUP_FLAGS(GROUP(ch)), GROUP_ANON);
send_to_char(ch, "The group location is now %s to other players.\r\n", send_to_char(ch, "The group location is now %s to other players.\r\n", IS_SET(GROUP_FLAGS(GROUP(ch)), GROUP_ANON) ? "invisible" : "visible");
IS_SET(GROUP_FLAGS(GROUP(ch)), GROUP_ANON) ? "invisible" : "visible");
} else } else
send_to_char(ch, "The flag options are: Open, Anonymous\r\n"); send_to_char(ch, "The flag options are: Open, Anonymous\r\n");
} else { } else {
@@ -495,7 +492,7 @@ ACMD(do_split)
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
int amount, num = 0, share, rest; int amount, num = 0, share, rest;
size_t len; size_t len;
char_data *k; struct char_data *k;
if (IS_NPC(ch)) if (IS_NPC(ch))
return; return;
@@ -514,7 +511,7 @@ ACMD(do_split)
} }
if (GROUP(ch)) if (GROUP(ch))
while ((k = (char_data *)simple_list(GROUP(ch)->members)) != NULL) while ((k = (struct char_data *) simple_list(GROUP(ch)->members)) != NULL)
if (IN_ROOM(ch) == IN_ROOM(k) && !IS_NPC(k)) if (IN_ROOM(ch) == IN_ROOM(k) && !IS_NPC(k))
num++; num++;
@@ -537,7 +534,7 @@ ACMD(do_split)
(rest == 1) ? "" : "s", (rest == 1) ? "was" : "were", GET_NAME(ch)); (rest == 1) ? "" : "s", (rest == 1) ? "was" : "were", GET_NAME(ch));
} }
while ((k = (char_data *)simple_list(GROUP(ch)->members)) != NULL) while ((k = (struct char_data *) simple_list(GROUP(ch)->members)) != NULL)
if (k != ch && IN_ROOM(ch) == IN_ROOM(k) && !IS_NPC(k)) { if (k != ch && IN_ROOM(ch) == IN_ROOM(k) && !IS_NPC(k)) {
increase_gold(k, share); increase_gold(k, share);
send_to_char(k, "%s", buf); send_to_char(k, "%s", buf);
@@ -559,7 +556,7 @@ ACMD(do_split)
ACMD(do_use) ACMD(do_use)
{ {
char buf[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH];
obj_data *mag_item; struct obj_data *mag_item;
half_chop(argument, arg, buf); half_chop(argument, arg, buf);
if (!*arg) { if (!*arg) {
@@ -860,12 +857,13 @@ ACMD(do_gen_tog)
return; return;
} }
static void show_happyhour(char_data *ch) static void show_happyhour(struct char_data *ch)
{ {
char happyexp[80], happygold[80], happyqp[80]; char happyexp[80], happygold[80], happyqp[80];
int secs_left; int secs_left;
if ((IS_HAPPYHOUR) || (GET_LEVEL(ch) >= LVL_GRGOD)) { if ((IS_HAPPYHOUR) || (GET_LEVEL(ch) >= LVL_GRGOD))
{
if (HAPPY_TIME) if (HAPPY_TIME)
secs_left = ((HAPPY_TIME - 1) * SECS_PER_MUD_HOUR) + next_tick; secs_left = ((HAPPY_TIME - 1) * SECS_PER_MUD_HOUR) + next_tick;
else else
@@ -884,7 +882,9 @@ static void show_happyhour(char_data *ch)
CCYEL(ch, C_NRM), (secs_left / 3600), CCNRM(ch, C_NRM), CCYEL(ch, C_NRM), (secs_left / 3600), CCNRM(ch, C_NRM),
CCYEL(ch, C_NRM), (secs_left % 3600) / 60, CCNRM(ch, C_NRM), CCYEL(ch, C_NRM), (secs_left % 3600) / 60, CCNRM(ch, C_NRM),
CCYEL(ch, C_NRM), (secs_left % 60), CCNRM(ch, C_NRM) ); CCYEL(ch, C_NRM), (secs_left % 60), CCNRM(ch, C_NRM) );
} else { }
else
{
send_to_char(ch, "Sorry, there is currently no happy hour!\r\n"); send_to_char(ch, "Sorry, there is currently no happy hour!\r\n");
} }
} }
@@ -894,7 +894,8 @@ ACMD(do_happyhour)
char arg[MAX_INPUT_LENGTH], val[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH], val[MAX_INPUT_LENGTH];
int num; int num;
if (GET_LEVEL(ch) < LVL_GOD) { if (GET_LEVEL(ch) < LVL_GOD)
{
show_happyhour(ch); show_happyhour(ch);
return; return;
} }
@@ -902,15 +903,20 @@ ACMD(do_happyhour)
/* Only Imms get here, so check args */ /* Only Imms get here, so check args */
two_arguments(argument, arg, val); two_arguments(argument, arg, val);
if (is_abbrev(arg, "experience")) { if (is_abbrev(arg, "experience"))
{
num = MIN(MAX((atoi(val)), 0), 1000); num = MIN(MAX((atoi(val)), 0), 1000);
HAPPY_EXP = num; HAPPY_EXP = num;
send_to_char(ch, "Happy Hour Exp rate set to +%d%%\r\n", HAPPY_EXP); send_to_char(ch, "Happy Hour Exp rate set to +%d%%\r\n", HAPPY_EXP);
} else if ((is_abbrev(arg, "gold")) || (is_abbrev(arg, "coins"))) { }
else if ((is_abbrev(arg, "gold")) || (is_abbrev(arg, "coins")))
{
num = MIN(MAX((atoi(val)), 0), 1000); num = MIN(MAX((atoi(val)), 0), 1000);
HAPPY_GOLD = num; HAPPY_GOLD = num;
send_to_char(ch, "Happy Hour Gold rate set to +%d%%\r\n", HAPPY_GOLD); send_to_char(ch, "Happy Hour Gold rate set to +%d%%\r\n", HAPPY_GOLD);
} else if ((is_abbrev(arg, "time")) || (is_abbrev(arg, "ticks"))) { }
else if ((is_abbrev(arg, "time")) || (is_abbrev(arg, "ticks")))
{
num = MIN(MAX((atoi(val)), 0), 1000); num = MIN(MAX((atoi(val)), 0), 1000);
if (HAPPY_TIME && !num) if (HAPPY_TIME && !num)
game_info("Happyhour has been stopped!"); game_info("Happyhour has been stopped!");
@@ -923,19 +929,27 @@ ACMD(do_happyhour)
(HAPPY_TIME*SECS_PER_MUD_HOUR)/3600, (HAPPY_TIME*SECS_PER_MUD_HOUR)/3600,
((HAPPY_TIME*SECS_PER_MUD_HOUR)%3600) / 60, ((HAPPY_TIME*SECS_PER_MUD_HOUR)%3600) / 60,
(HAPPY_TIME*SECS_PER_MUD_HOUR)%60 ); (HAPPY_TIME*SECS_PER_MUD_HOUR)%60 );
} else if ((is_abbrev(arg, "qp")) || (is_abbrev(arg, "questpoints"))) { }
else if ((is_abbrev(arg, "qp")) || (is_abbrev(arg, "questpoints")))
{
num = MIN(MAX((atoi(val)), 0), 1000); num = MIN(MAX((atoi(val)), 0), 1000);
HAPPY_QP = num; HAPPY_QP = num;
send_to_char(ch, "Happy Hour Questpoints rate set to +%d%%\r\n", HAPPY_QP); send_to_char(ch, "Happy Hour Questpoints rate set to +%d%%\r\n", HAPPY_QP);
} else if (is_abbrev(arg, "show")) { }
else if (is_abbrev(arg, "show"))
{
show_happyhour(ch); show_happyhour(ch);
} else if (is_abbrev(arg, "default")) { }
else if (is_abbrev(arg, "default"))
{
HAPPY_EXP = 100; HAPPY_EXP = 100;
HAPPY_GOLD = 50; HAPPY_GOLD = 50;
HAPPY_QP = 50; HAPPY_QP = 50;
HAPPY_TIME = 48; HAPPY_TIME = 48;
game_info("A Happyhour has started!"); game_info("A Happyhour has started!");
} else { }
else
{
send_to_char(ch, "Usage: %shappyhour %s- show usage (this info)\r\n" send_to_char(ch, "Usage: %shappyhour %s- show usage (this info)\r\n"
" %shappyhour show %s- display current settings (what mortals see)\r\n" " %shappyhour show %s- display current settings (what mortals see)\r\n"
" %shappyhour time <ticks> %s- set happyhour time and start timer\r\n" " %shappyhour time <ticks> %s- set happyhour time and start timer\r\n"

View File

@@ -30,8 +30,8 @@ ACMD(do_action)
char arg[MAX_INPUT_LENGTH], part[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH], part[MAX_INPUT_LENGTH];
int act_nr; int act_nr;
struct social_messg *action; struct social_messg *action;
char_data *vict; struct char_data *vict;
obj_data *targ; struct obj_data *targ;
if ((act_nr = find_action(cmd)) < 0) { if ((act_nr = find_action(cmd)) < 0) {
send_to_char(ch, "That action is not supported.\r\n"); send_to_char(ch, "That action is not supported.\r\n");
@@ -65,8 +65,7 @@ ACMD(do_action)
if (!vict) { if (!vict) {
if (action->char_obj_found) { if (action->char_obj_found) {
targ = get_obj_in_list_vis(ch, arg, NULL, ch->carrying); targ = get_obj_in_list_vis(ch, arg, NULL, ch->carrying);
if (!targ) if (!targ) targ = get_obj_in_list_vis(ch, arg, NULL, world[IN_ROOM(ch)].contents);
targ = get_obj_in_list_vis(ch, arg, NULL, world[IN_ROOM(ch)].contents);
if (targ) { if (targ) {
act(action->char_obj_found, action->hide, ch, targ, 0, TO_CHAR); act(action->char_obj_found, action->hide, ch, targ, 0, TO_CHAR);
act(action->others_obj_found, action->hide, ch, targ, 0, TO_ROOM); act(action->others_obj_found, action->hide, ch, targ, 0, TO_ROOM);
@@ -93,9 +92,9 @@ ACMD(do_action)
act("$N is not in a proper position for that.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP); act("$N is not in a proper position for that.", FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP);
else { else {
if (*part) { if (*part) {
act(action->char_body_found, 0, ch, (obj_data *)part, vict, TO_CHAR | TO_SLEEP); act(action->char_body_found, 0, ch, (struct obj_data *)part, vict, TO_CHAR | TO_SLEEP);
act(action->others_body_found, action->hide, ch, (obj_data *)part, vict, TO_NOTVICT); act(action->others_body_found, action->hide, ch, (struct obj_data *)part, vict, TO_NOTVICT);
act(action->vict_body_found, action->hide, ch, (obj_data *)part, vict, TO_VICT); act(action->vict_body_found, action->hide, ch, (struct obj_data *)part, vict, TO_VICT);
} else { } else {
act(action->char_found, 0, ch, 0, vict, TO_CHAR | TO_SLEEP); act(action->char_found, 0, ch, 0, vict, TO_CHAR | TO_SLEEP);
act(action->others_found, action->hide, ch, 0, vict, TO_NOTVICT); act(action->others_found, action->hide, ch, 0, vict, TO_NOTVICT);
@@ -129,8 +128,7 @@ void create_command_list(void)
/* count the commands in the command list */ /* count the commands in the command list */
i = 0; i = 0;
while (*cmd_info[i].command != '\n') while(*cmd_info[i].command != '\n') i++;
i++;
i++; i++;
CREATE(complete_cmd_info, struct command_info, top_of_socialt + i + 2); CREATE(complete_cmd_info, struct command_info, top_of_socialt + i + 2);
@@ -175,38 +173,22 @@ void free_social_messages(void)
free(soc_mess_list); free(soc_mess_list);
} }
void free_action(struct social_messg *mess) void free_action(struct social_messg *mess) {
{ if (mess->command) free(mess->command);
if (mess->command) if (mess->sort_as) free(mess->sort_as);
free(mess->command); if (mess->char_no_arg) free(mess->char_no_arg);
if (mess->sort_as) if (mess->others_no_arg) free(mess->others_no_arg);
free(mess->sort_as); if (mess->char_found) free(mess->char_found);
if (mess->char_no_arg) if (mess->others_found) free(mess->others_found);
free(mess->char_no_arg); if (mess->vict_found) free(mess->vict_found);
if (mess->others_no_arg) if (mess->char_body_found) free(mess->char_body_found);
free(mess->others_no_arg); if (mess->others_body_found) free(mess->others_body_found);
if (mess->char_found) if (mess->vict_body_found) free(mess->vict_body_found);
free(mess->char_found); if (mess->not_found) free(mess->not_found);
if (mess->others_found) if (mess->char_auto) free(mess->char_auto);
free(mess->others_found); if (mess->others_auto) free(mess->others_auto);
if (mess->vict_found) if (mess->char_obj_found) free(mess->char_obj_found);
free(mess->vict_found); if (mess->others_obj_found) free(mess->others_obj_found);
if (mess->char_body_found)
free(mess->char_body_found);
if (mess->others_body_found)
free(mess->others_body_found);
if (mess->vict_body_found)
free(mess->vict_body_found);
if (mess->not_found)
free(mess->not_found);
if (mess->char_auto)
free(mess->char_auto);
if (mess->others_auto)
free(mess->others_auto);
if (mess->char_obj_found)
free(mess->char_obj_found);
if (mess->others_obj_found)
free(mess->others_obj_found);
memset(mess, 0, sizeof(struct social_messg)); memset(mess, 0, sizeof(struct social_messg));
} }
@@ -240,7 +222,7 @@ ACMD(do_gmote)
int act_nr, length; int act_nr, length;
char arg[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH];
struct social_messg *action; struct social_messg *action;
char_data *vict = NULL; struct char_data *vict = NULL;
half_chop(argument, buf, arg); half_chop(argument, buf, arg);

File diff suppressed because it is too large Load Diff

View File

@@ -22,19 +22,20 @@
/* local utility functions */ /* local utility functions */
static int aedit_find_command(const char *txt); static int aedit_find_command(const char *txt);
static void aedit_disp_menu(descriptor_data *d); static void aedit_disp_menu(struct descriptor_data * d);
static void aedit_save_to_disk(descriptor_data *d); static void aedit_save_to_disk(struct descriptor_data *d);
/* used in aedit parse */ /* used in aedit parse */
static void aedit_setup_new(descriptor_data *d); static void aedit_setup_new(struct descriptor_data *d);
static void aedit_setup_existing(descriptor_data *d, int real_num); static void aedit_setup_existing(struct descriptor_data *d, int real_num);
static void aedit_save_internally(descriptor_data *d); static void aedit_save_internally(struct descriptor_data *d);
/* Utils and exported functions. */ /* Utils and exported functions. */
ACMD(do_oasis_aedit) ACMD(do_oasis_aedit)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
descriptor_data *d; struct descriptor_data *d;
int i; int i;
/* No building as a mob or while being forced. */ /* No building as a mob or while being forced. */
@@ -106,8 +107,7 @@ ACMD(do_oasis_aedit)
mudlog(CMP, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE, "OLC: %s starts editing actions.", GET_NAME(ch)); mudlog(CMP, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE, "OLC: %s starts editing actions.", GET_NAME(ch));
} }
static void aedit_setup_new(descriptor_data *d) static void aedit_setup_new(struct descriptor_data *d) {
{
CREATE(OLC_ACTION(d), struct social_messg, 1); CREATE(OLC_ACTION(d), struct social_messg, 1);
OLC_ACTION(d)->command = strdup(OLC_STORAGE(d)); OLC_ACTION(d)->command = strdup(OLC_STORAGE(d));
OLC_ACTION(d)->sort_as = strdup(OLC_STORAGE(d)); OLC_ACTION(d)->sort_as = strdup(OLC_STORAGE(d));
@@ -132,8 +132,7 @@ static void aedit_setup_new(descriptor_data *d)
OLC_VAL(d) = 0; OLC_VAL(d) = 0;
} }
static void aedit_setup_existing(descriptor_data *d, int real_num) static void aedit_setup_existing(struct descriptor_data *d, int real_num) {
{
CREATE(OLC_ACTION(d), struct social_messg, 1); CREATE(OLC_ACTION(d), struct social_messg, 1);
OLC_ACTION(d)->command = strdup(soc_mess_list[real_num].command); OLC_ACTION(d)->command = strdup(soc_mess_list[real_num].command);
OLC_ACTION(d)->sort_as = strdup(soc_mess_list[real_num].sort_as); OLC_ACTION(d)->sort_as = strdup(soc_mess_list[real_num].sort_as);
@@ -171,8 +170,7 @@ static void aedit_setup_existing(descriptor_data *d, int real_num)
aedit_disp_menu(d); aedit_disp_menu(d);
} }
static void aedit_save_internally(descriptor_data *d) static void aedit_save_internally(struct descriptor_data *d) {
{
struct social_messg *new_soc_mess_list = NULL; struct social_messg *new_soc_mess_list = NULL;
int i; int i;
@@ -202,8 +200,7 @@ static void aedit_save_internally(descriptor_data *d)
aedit_save_to_disk(d); /* autosave by Rumble */ aedit_save_to_disk(d); /* autosave by Rumble */
} }
static void aedit_save_to_disk(descriptor_data *d) static void aedit_save_to_disk(struct descriptor_data *d) {
{
FILE *fp; FILE *fp;
int i; int i;
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
@@ -255,10 +252,9 @@ static void aedit_save_to_disk(descriptor_data *d)
} }
/* The Main Menu. */ /* The Main Menu. */
static void aedit_disp_menu(descriptor_data *d) static void aedit_disp_menu(struct descriptor_data * d) {
{
struct social_messg *action = OLC_ACTION(d); struct social_messg *action = OLC_ACTION(d);
char_data *ch = d->character; struct char_data *ch = d->character;
get_char_colors(ch); get_char_colors(ch);
@@ -326,15 +322,13 @@ static void aedit_disp_menu(descriptor_data *d)
} }
/* The main loop. */ /* The main loop. */
void aedit_parse(descriptor_data *d, char *arg) void aedit_parse(struct descriptor_data * d, char *arg) {
{
int i; int i;
switch (OLC_MODE(d)) { switch (OLC_MODE(d)) {
case AEDIT_CONFIRM_SAVESTRING: case AEDIT_CONFIRM_SAVESTRING:
switch (*arg) { switch (*arg) {
case 'y': case 'y': case 'Y':
case 'Y':
aedit_save_internally(d); aedit_save_internally(d);
mudlog (CMP, MAX(LVL_GOD, GET_INVIS_LEV(d->character)), TRUE, "OLC: %s edits action %s", mudlog (CMP, MAX(LVL_GOD, GET_INVIS_LEV(d->character)), TRUE, "OLC: %s edits action %s",
GET_NAME(d->character), OLC_ACTION(d)->command); GET_NAME(d->character), OLC_ACTION(d)->command);
@@ -343,8 +337,7 @@ void aedit_parse(descriptor_data *d, char *arg)
cleanup_olc(d, CLEANUP_STRUCTS); cleanup_olc(d, CLEANUP_STRUCTS);
write_to_output(d, "Action saved to disk.\r\n"); write_to_output(d, "Action saved to disk.\r\n");
break; break;
case 'n': case 'n': case 'N':
case 'N':
/* free everything up, including strings etc */ /* free everything up, including strings etc */
cleanup_olc(d, CLEANUP_ALL); cleanup_olc(d, CLEANUP_ALL);
break; break;
@@ -357,16 +350,13 @@ void aedit_parse(descriptor_data *d, char *arg)
case AEDIT_CONFIRM_EDIT: case AEDIT_CONFIRM_EDIT:
switch (*arg) { switch (*arg) {
case 'y': case 'y': case 'Y':
case 'Y':
aedit_setup_existing(d, OLC_ZNUM(d)); aedit_setup_existing(d, OLC_ZNUM(d));
break; break;
case 'q': case 'q': case 'Q':
case 'Q':
cleanup_olc(d, CLEANUP_ALL); cleanup_olc(d, CLEANUP_ALL);
break; break;
case 'n': case 'n': case 'N':
case 'N':
OLC_ZNUM(d)++; OLC_ZNUM(d)++;
for (;(OLC_ZNUM(d) <= top_of_socialt); OLC_ZNUM(d)++) for (;(OLC_ZNUM(d) <= top_of_socialt); OLC_ZNUM(d)++)
if (is_abbrev(OLC_STORAGE(d), soc_mess_list[OLC_ZNUM(d)].command)) if (is_abbrev(OLC_STORAGE(d), soc_mess_list[OLC_ZNUM(d)].command))
@@ -396,14 +386,10 @@ void aedit_parse(descriptor_data *d, char *arg)
case AEDIT_CONFIRM_ADD: case AEDIT_CONFIRM_ADD:
switch (*arg) { switch (*arg) {
case 'y': case 'y': case 'Y':
case 'Y':
aedit_setup_new(d); aedit_setup_new(d);
break; break;
case 'n': case 'n': case 'N': case 'q': case 'Q':
case 'N':
case 'q':
case 'Q':
cleanup_olc(d, CLEANUP_ALL); cleanup_olc(d, CLEANUP_ALL);
break; break;
default: default:
@@ -416,13 +402,12 @@ void aedit_parse(descriptor_data *d, char *arg)
case AEDIT_MAIN_MENU: case AEDIT_MAIN_MENU:
switch (*arg) { switch (*arg) {
case 'q': case 'q': case 'Q':
case 'Q':
if (OLC_VAL(d)) { /* Something was modified */ if (OLC_VAL(d)) { /* Something was modified */
write_to_output(d, "Do you wish to save your changes? : "); write_to_output(d, "Do you wish to save your changes? : ");
OLC_MODE(d) = AEDIT_CONFIRM_SAVESTRING; OLC_MODE(d) = AEDIT_CONFIRM_SAVESTRING;
} else }
cleanup_olc(d, CLEANUP_ALL); else cleanup_olc(d, CLEANUP_ALL);
break; break;
case 'n': case 'n':
write_to_output(d, "Enter action name: "); write_to_output(d, "Enter action name: ");
@@ -457,24 +442,21 @@ void aedit_parse(descriptor_data *d, char *arg)
aedit_disp_menu(d); aedit_disp_menu(d);
OLC_VAL(d) = 1; OLC_VAL(d) = 1;
break; break;
case 'a': case 'a': case 'A':
case 'A':
write_to_output(d, "Enter social shown to the Character when there is no argument supplied.\r\n" write_to_output(d, "Enter social shown to the Character when there is no argument supplied.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
((OLC_ACTION(d)->char_no_arg)?OLC_ACTION(d)->char_no_arg:"NULL")); ((OLC_ACTION(d)->char_no_arg)?OLC_ACTION(d)->char_no_arg:"NULL"));
OLC_MODE(d) = AEDIT_NOVICT_CHAR; OLC_MODE(d) = AEDIT_NOVICT_CHAR;
return; return;
case 'b': case 'b': case 'B':
case 'B':
write_to_output(d, "Enter social shown to Others when there is no argument supplied.\r\n" write_to_output(d, "Enter social shown to Others when there is no argument supplied.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
((OLC_ACTION(d)->others_no_arg)?OLC_ACTION(d)->others_no_arg:"NULL")); ((OLC_ACTION(d)->others_no_arg)?OLC_ACTION(d)->others_no_arg:"NULL"));
OLC_MODE(d) = AEDIT_NOVICT_OTHERS; OLC_MODE(d) = AEDIT_NOVICT_OTHERS;
return; return;
case 'c': case 'c': case 'C':
case 'C':
write_to_output(d, "Enter text shown to the Character when his victim isnt found.\r\n" write_to_output(d, "Enter text shown to the Character when his victim isnt found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -482,8 +464,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_NOT_FOUND; OLC_MODE(d) = AEDIT_VICT_NOT_FOUND;
return; return;
case 'd': case 'd': case 'D':
case 'D':
write_to_output(d, "Enter social shown to the Character when it is its own victim.\r\n" write_to_output(d, "Enter social shown to the Character when it is its own victim.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -491,8 +472,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_SELF_CHAR; OLC_MODE(d) = AEDIT_SELF_CHAR;
return; return;
case 'e': case 'e': case 'E':
case 'E':
write_to_output(d, "Enter social shown to Others when the Char is its own victim.\r\n" write_to_output(d, "Enter social shown to Others when the Char is its own victim.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -500,8 +480,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_SELF_OTHERS; OLC_MODE(d) = AEDIT_SELF_OTHERS;
return; return;
case 'f': case 'f': case 'F':
case 'F':
write_to_output(d, "Enter normal social shown to the Character when the victim is found.\r\n" write_to_output(d, "Enter normal social shown to the Character when the victim is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -509,8 +488,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_CHAR_FOUND; OLC_MODE(d) = AEDIT_VICT_CHAR_FOUND;
return; return;
case 'g': case 'g': case 'G':
case 'G':
write_to_output(d, "Enter normal social shown to Others when the victim is found.\r\n" write_to_output(d, "Enter normal social shown to Others when the victim is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -518,8 +496,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_OTHERS_FOUND; OLC_MODE(d) = AEDIT_VICT_OTHERS_FOUND;
return; return;
case 'h': case 'h': case 'H':
case 'H':
write_to_output(d, "Enter normal social shown to the Victim when the victim is found.\r\n" write_to_output(d, "Enter normal social shown to the Victim when the victim is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -527,8 +504,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_VICT_FOUND; OLC_MODE(d) = AEDIT_VICT_VICT_FOUND;
return; return;
case 'i': case 'i': case 'I':
case 'I':
write_to_output(d, "Enter 'body part' social shown to the Character when the victim is found.\r\n" write_to_output(d, "Enter 'body part' social shown to the Character when the victim is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -536,8 +512,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_CHAR_BODY_FOUND; OLC_MODE(d) = AEDIT_VICT_CHAR_BODY_FOUND;
return; return;
case 'j': case 'j': case 'J':
case 'J':
write_to_output(d, "Enter 'body part' social shown to Others when the victim is found.\r\n" write_to_output(d, "Enter 'body part' social shown to Others when the victim is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -545,8 +520,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_OTHERS_BODY_FOUND; OLC_MODE(d) = AEDIT_VICT_OTHERS_BODY_FOUND;
return; return;
case 'k': case 'k': case 'K':
case 'K':
write_to_output(d, "Enter 'body part' social shown to the Victim when the victim is found.\r\n" write_to_output(d, "Enter 'body part' social shown to the Victim when the victim is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -554,8 +528,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_VICT_VICT_BODY_FOUND; OLC_MODE(d) = AEDIT_VICT_VICT_BODY_FOUND;
return; return;
case 'l': case 'l': case 'L':
case 'L':
write_to_output(d, "Enter 'object' social shown to the Character when the object is found.\r\n" write_to_output(d, "Enter 'object' social shown to the Character when the object is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -563,8 +536,7 @@ void aedit_parse(descriptor_data *d, char *arg)
OLC_MODE(d) = AEDIT_OBJ_CHAR_FOUND; OLC_MODE(d) = AEDIT_OBJ_CHAR_FOUND;
return; return;
case 'm': case 'm': case 'M':
case 'M':
write_to_output(d, "Enter 'object' social shown to the Room when the object is found.\r\n" write_to_output(d, "Enter 'object' social shown to the Room when the object is found.\r\n"
"[OLD]: %s\r\n" "[OLD]: %s\r\n"
"[NEW]: ", "[NEW]: ",
@@ -846,3 +818,4 @@ static int aedit_find_command(const char *txt)
return (cmd); return (cmd);
return (-1); return (-1);
} }

View File

@@ -15,8 +15,12 @@
#include "utils.h" #include "utils.h"
#include "comm.h" #include "comm.h"
#include "interpreter.h" #include "interpreter.h"
#include "handler.h"
#include "db.h" #include "db.h"
#include "spells.h"
#include "house.h"
#include "constants.h" #include "constants.h"
#include "dg_scripts.h"
#include "asciimap.h" #include "asciimap.h"
/****************************************************************************** /******************************************************************************
@@ -29,28 +33,29 @@
#define DEFAULT_MAP_SIZE CONFIG_MAP_SIZE #define DEFAULT_MAP_SIZE CONFIG_MAP_SIZE
#define MAX_MAP_SIZE ((CANVAS_WIDTH - 1)/4) #define MAX_MAP_SIZE (CANVAS_WIDTH - 1)/4
#define MAX_MAP CANVAS_WIDTH #define MAX_MAP CANVAS_WIDTH
#define MAX_MAP_DIR 10 #define MAX_MAP_DIR 10
#define MAX_MAP_FOLLOW 10
#define SECT_EMPTY 30 /* anything greater than num sect types */ #define SECT_EMPTY 30 /* anything greater than num sect types */
#define SECT_STRANGE (SECT_EMPTY + 1) #define SECT_STRANGE (SECT_EMPTY + 1)
#define SECT_HERE (SECT_STRANGE + 1) #define SECT_HERE (SECT_STRANGE + 1)
#define DOOR_NS (-1) #define DOOR_NS -1
#define DOOR_EW (-2) #define DOOR_EW -2
#define DOOR_UP (-3) #define DOOR_UP -3
#define DOOR_DOWN (-4) #define DOOR_DOWN -4
#define DOOR_DIAGNE (-5) #define DOOR_DIAGNE -5
#define DOOR_DIAGNW (-6) #define DOOR_DIAGNW -6
#define VDOOR_NS (-7) #define VDOOR_NS -7
#define VDOOR_EW (-8) #define VDOOR_EW -8
#define VDOOR_DIAGNE (-9) #define VDOOR_DIAGNE -9
#define VDOOR_DIAGNW (-10) #define VDOOR_DIAGNW -10
#define DOOR_UP_AND_NE (-11) #define DOOR_UP_AND_NE -11
#define DOOR_DOWN_AND_SE (-12) #define DOOR_DOWN_AND_SE -12
#define DOOR_NONE (-13) #define DOOR_NONE -13
#define NUM_DOOR_TYPES 13 #define NUM_DOOR_TYPES 13
#define MAP_CIRCLE 0 #define MAP_CIRCLE 0
@@ -59,6 +64,8 @@
#define MAP_NORMAL 0 #define MAP_NORMAL 0
#define MAP_COMPACT 1 #define MAP_COMPACT 1
static bool show_worldmap(struct char_data *ch);
struct map_info_type struct map_info_type
{ {
int sector_type; int sector_type;
@@ -185,12 +192,9 @@ static int door_offsets[6][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1},{ -1, 1},{ 1,
static int door_marks[6] = { DOOR_NS, DOOR_EW, DOOR_NS, DOOR_EW, DOOR_UP, DOOR_DOWN }; static int door_marks[6] = { DOOR_NS, DOOR_EW, DOOR_NS, DOOR_EW, DOOR_UP, DOOR_DOWN };
*/ */
static int offsets[10][2] ={ {-2, 0},{ 0, 2},{ 2, 0},{ 0, -2},{0, 0},{ 0, 0},{ -2, -2},{ -2, 2},{2, 2},{ 2, -2} }; static int offsets[10][2] ={ {-2, 0},{ 0, 2},{ 2, 0},{ 0, -2},{0, 0},{ 0, 0},{ -2, -2},{ -2, 2},{2, 2},{ 2, -2} };
static int offsets_worldmap[10][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}, {0, 0}, {0, 0}, {-1, -1}, {-1, 1}, {1, 1}, static int offsets_worldmap[10][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1},{0, 0},{ 0, 0},{ -1, -1},{ -1, 1},{1, 1},{ 1, -1} };
{1, -1}}; static int door_offsets[10][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1},{ -1, 1},{ 1, 1},{ -1, -1},{ -1, 1},{ 1, 1},{ 1, -1} };
static int door_offsets[10][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}, {-1, 1}, {1, 1}, {-1, -1}, {-1, 1}, {1, 1}, static int door_marks[10] = { DOOR_NS, DOOR_EW, DOOR_NS, DOOR_EW, DOOR_UP, DOOR_DOWN, DOOR_DIAGNW, DOOR_DIAGNE, DOOR_DIAGNW, DOOR_DIAGNE};
{1, -1}};
static int door_marks[10] = {DOOR_NS, DOOR_EW, DOOR_NS, DOOR_EW, DOOR_UP, DOOR_DOWN, DOOR_DIAGNW, DOOR_DIAGNE,
DOOR_DIAGNW, DOOR_DIAGNE};
static int vdoor_marks[4] = { VDOOR_NS, VDOOR_EW, VDOOR_NS, VDOOR_EW }; static int vdoor_marks[4] = { VDOOR_NS, VDOOR_EW, VDOOR_NS, VDOOR_EW };
/****************************************************************************** /******************************************************************************
* End Local (File Scope) Defines and Global Variables * End Local (File Scope) Defines and Global Variables
@@ -199,36 +203,33 @@ static int vdoor_marks[4] = {VDOOR_NS, VDOOR_EW, VDOOR_NS, VDOOR_EW};
/****************************************************************************** /******************************************************************************
* Begin Local (File Scope) Function Prototypes * Begin Local (File Scope) Function Prototypes
*****************************************************************************/ *****************************************************************************/
static void MapArea(room_rnum room, const char_data *ch, int x, int y, int min, int max, int xpos, int ypos, static void MapArea(room_rnum room, struct char_data *ch, int x, int y, int min, int max, sh_int xpos, sh_int ypos, bool worldmap);
bool worldmap);
static char *StringMap(int centre, int size); static char *StringMap(int centre, int size);
static char *WorldMap(int centre, int size, int mapshape, int maptype ); static char *WorldMap(int centre, int size, int mapshape, int maptype );
static char *CompactStringMap(int centre, int size); static char *CompactStringMap(int centre, int size);
static void perform_map(char_data *ch, char *argument, bool worldmap); static void perform_map( struct char_data *ch, char *argument, bool worldmap );
static bool show_worldmap(const char_data *ch);
/****************************************************************************** /******************************************************************************
* End Local (File Scope) Function Prototypes * End Local (File Scope) Function Prototypes
*****************************************************************************/ *****************************************************************************/
bool can_see_map(const char_data *ch) bool can_see_map(struct char_data *ch) {
{
/* Is the map funcionality disabled? */ /* Is the map funcionality disabled? */
if (CONFIG_MAP == MAP_OFF || (CONFIG_MAP == MAP_IMM_ONLY && GET_LEVEL(ch) < LVL_IMMORT)) if (CONFIG_MAP == MAP_OFF)
return FALSE;
else if ((CONFIG_MAP == MAP_IMM_ONLY) && (GET_LEVEL(ch) < LVL_IMMORT))
return FALSE; return FALSE;
return TRUE; return TRUE;
} }
/* MapArea function - create the actual map */ /* MapArea function - create the actual map */
static void MapArea(const room_rnum room, const char_data *ch, const int x, const int y, // NOLINT(*-no-recursion) static void MapArea(room_rnum room, struct char_data *ch, int x, int y, int min, int max, sh_int xpos, sh_int ypos, bool worldmap)
const int min, const int max, const int xpos, const int ypos, const bool worldmap)
{ {
room_rnum prospect_room; room_rnum prospect_room;
struct room_direction_data *pexit; struct room_direction_data *pexit;
int door; int door, ew_size=0, ns_size=0, x_exit_pos=0, y_exit_pos=0;
const int ew_size = 0, ns_size = 0, x_exit_pos = 0, y_exit_pos = 0; sh_int prospect_xpos, prospect_ypos;
int prospect_xpos, prospect_ypos;
if (map[x][y] < 0) if (map[x][y] < 0)
return; /* this is a door */ return; /* this is a door */
@@ -239,74 +240,56 @@ static void MapArea(const room_rnum room, const char_data *ch, const int x, cons
else else
map[x][y] = SECT(room); map[x][y] = SECT(room);
if (x < min || y < min || x > max || y > max) if ( (x < min) || ( y < min) || ( x > max ) || ( y > max) ) return;
return;
/* Check for exits */ /* Check for exits */
for ( door = 0; door < MAX_MAP_DIR; door++ ) { for ( door = 0; door < MAX_MAP_DIR; door++ ) {
if (xpos + door_offsets[door][0] >= 0 && if( door < MAX_MAP_FOLLOW &&
xpos+door_offsets[door][0] >= 0 &&
xpos+door_offsets[door][0] <= ns_size && xpos+door_offsets[door][0] <= ns_size &&
ypos+door_offsets[door][1] >= 0 && ypos+door_offsets[door][1] >= 0 &&
ypos + door_offsets[door][1] <= ew_size) { /* Virtual exit */ ypos+door_offsets[door][1] <= ew_size)
// linting tells me vdoor_marks will have an index out of bounds here, since doors can have more values than { /* Virtual exit */
// vdoor_marks contains. Either we're not actually getting here for those values, or we're not getting here at all.
// Adding a guard for now. --welcor 20241230
if (door < sizeof(vdoor_marks))
map[x + door_offsets[door][0]][y + door_offsets[door][1]] = vdoor_marks[door];
map[x+door_offsets[door][0]][y+door_offsets[door][1]] = vdoor_marks[door] ;
if (map[x+offsets[door][0]][y+offsets[door][1]] == SECT_EMPTY ) if (map[x+offsets[door][0]][y+offsets[door][1]] == SECT_EMPTY )
MapArea(room, ch, x + offsets[door][0], y + offsets[door][1], min, max, xpos + door_offsets[door][0], MapArea(room,ch,x + offsets[door][0], y + offsets[door][1], min, max, xpos+door_offsets[door][0], ypos+door_offsets[door][1], worldmap);
ypos + door_offsets[door][1], worldmap);
continue; continue;
} }
if ( (pexit = world[room].dir_option[door]) != NULL && if ( (pexit = world[room].dir_option[door]) != NULL &&
pexit->to_room > 0 && pexit->to_room != NOWHERE && (pexit->to_room > 0 ) && (pexit->to_room != NOWHERE) &&
!IS_SET(pexit->exit_info, EX_CLOSED) && (!IS_SET(pexit->exit_info, EX_CLOSED)) &&
(!IS_SET(pexit->exit_info, EX_HIDDEN) || PRF_FLAGGED(ch, PRF_HOLYLIGHT))) { /* A real exit */ (!IS_SET(pexit->exit_info, EX_HIDDEN) || PRF_FLAGGED(ch, PRF_HOLYLIGHT)) )
{ /* A real exit */
/* But is the door here... */ /* But is the door here... */
switch (door) { switch (door) {
case NORTH: case NORTH:
if (xpos > 0 || ypos != y_exit_pos) if(xpos > 0 || ypos!=y_exit_pos) continue;
continue;
break; break;
case SOUTH: case SOUTH:
if (xpos < ns_size || ypos != y_exit_pos) if(xpos < ns_size || ypos!=y_exit_pos) continue;
continue;
break; break;
case EAST: case EAST:
if (ypos < ew_size || xpos != x_exit_pos) if(ypos < ew_size || xpos!=x_exit_pos) continue;
continue;
break; break;
case WEST: case WEST:
if (ypos > 0 || xpos != x_exit_pos) if(ypos > 0 || xpos!=x_exit_pos) continue;
continue;
break; break;
case NORTHWEST: case NORTHWEST:
if (xpos > 0 || ypos != y_exit_pos || ypos > 0 || xpos != x_exit_pos) if(xpos > 0 || ypos!=y_exit_pos || ypos > 0 || xpos!=x_exit_pos) continue;
continue;
break; break;
case NORTHEAST: case NORTHEAST:
if (xpos > 0 || ypos != y_exit_pos || ypos < ew_size || xpos != x_exit_pos) if(xpos > 0 || ypos!=y_exit_pos || ypos < ew_size || xpos!=x_exit_pos) continue;
continue;
break; break;
case SOUTHEAST: case SOUTHEAST:
if (xpos < ns_size || ypos != y_exit_pos || ypos < ew_size || xpos != x_exit_pos) if(xpos < ns_size || ypos!=y_exit_pos || ypos < ew_size || xpos!=x_exit_pos) continue;
continue;
break; break;
case SOUTHWEST: case SOUTHWEST:
if (xpos < ns_size || ypos != y_exit_pos || ypos > 0 || xpos != x_exit_pos) if(xpos < ns_size || ypos!=y_exit_pos || ypos > 0 || xpos!=x_exit_pos) continue;
continue;
break; break;
case UP:
case DOWN:
/* no check for up/down here */
break;
default:
log("Default case reached in switch in door check in asciimap. "
"Are any directions unaccounted for? door = %d", door);
} }
@@ -321,16 +304,16 @@ static void MapArea(const room_rnum room, const char_data *ch, const int x, cons
} }
if(!worldmap) { if(!worldmap) {
if (map[x + door_offsets[door][0]][y + door_offsets[door][1]] == DOOR_NONE || if ((map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_NONE) ||
map[x + door_offsets[door][0]][y + door_offsets[door][1]] == SECT_EMPTY) { (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == SECT_EMPTY) ) {
map[x+door_offsets[door][0]][y+door_offsets[door][1]] = door_marks[door]; map[x+door_offsets[door][0]][y+door_offsets[door][1]] = door_marks[door];
} else { } else {
if ((door == NORTHEAST && map[x + door_offsets[door][0]][y + door_offsets[door][1]] == DOOR_UP) || if ( ((door == NORTHEAST) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_UP)) ||
(door == UP && map[x + door_offsets[door][0]][y + door_offsets[door][1]] == DOOR_DIAGNE)) { ((door == UP) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_DIAGNE)) ) {
map[x+door_offsets[door][0]][y+door_offsets[door][1]] = DOOR_UP_AND_NE; map[x+door_offsets[door][0]][y+door_offsets[door][1]] = DOOR_UP_AND_NE;
} else if ((door == SOUTHEAST && map[x + door_offsets[door][0]][y + door_offsets[door][1]] == DOOR_DOWN) }
|| else if ( ((door == SOUTHEAST) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_DOWN)) ||
(door == DOWN && map[x + door_offsets[door][0]][y + door_offsets[door][1]] == DOOR_DIAGNW)) { ((door == DOWN) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_DIAGNW)) ) {
map[x+door_offsets[door][0]][y+door_offsets[door][1]] = DOOR_DOWN_AND_SE; map[x+door_offsets[door][0]][y+door_offsets[door][1]] = DOOR_DOWN_AND_SE;
} }
} }
@@ -355,29 +338,21 @@ static void MapArea(const room_rnum room, const char_data *ch, const int x, cons
prospect_xpos = world[prospect_room].dir_option[rev_dir[door]] ? x_exit_pos : ns_size/2; prospect_xpos = world[prospect_room].dir_option[rev_dir[door]] ? x_exit_pos : ns_size/2;
prospect_ypos = world[prospect_room].dir_option[rev_dir[door]] ? y_exit_pos : ew_size/2; prospect_ypos = world[prospect_room].dir_option[rev_dir[door]] ? y_exit_pos : ew_size/2;
break; break;
case UP:
case DOWN:
/* no check for up/down here */
break;
default:
log("Default case reached in prospect switch in asciimap. Are any directions unaccounted for? door = %d", door);
} }
if(worldmap) { if(worldmap) {
if (map[x + offsets_worldmap[door][0]][y + offsets_worldmap[door][1]] == SECT_EMPTY) if ( door < MAX_MAP_FOLLOW && map[x+offsets_worldmap[door][0]][y+offsets_worldmap[door][1]] == SECT_EMPTY )
MapArea(pexit->to_room, ch, x + offsets_worldmap[door][0], y + offsets_worldmap[door][1], min, max, MapArea(pexit->to_room,ch,x + offsets_worldmap[door][0], y + offsets_worldmap[door][1], min, max, prospect_xpos, prospect_ypos, worldmap);
prospect_xpos, prospect_ypos, worldmap);
} else { } else {
if (map[x + offsets[door][0]][y + offsets[door][1]] == SECT_EMPTY) if ( door < MAX_MAP_FOLLOW && map[x+offsets[door][0]][y+offsets[door][1]] == SECT_EMPTY )
MapArea(pexit->to_room, ch, x + offsets[door][0], y + offsets[door][1], min, max, prospect_xpos, MapArea(pexit->to_room,ch,x + offsets[door][0], y + offsets[door][1], min, max, prospect_xpos, prospect_ypos, worldmap);
prospect_ypos, worldmap);
} }
} /* end if exit there */ } /* end if exit there */
} }
return;
} }
/* Returns a string representation of the map */ /* Returns a string representation of the map */
// ReSharper disable once CppDFAConstantParameter
static char *StringMap(int centre, int size) static char *StringMap(int centre, int size)
{ {
static char strmap[MAX_MAP*MAX_MAP*11 + MAX_MAP*2 + 1]; static char strmap[MAX_MAP*MAX_MAP*11 + MAX_MAP*2 + 1];
@@ -390,7 +365,9 @@ static char *StringMap(int centre, int size)
/* every column */ /* every column */
for (y = centre - CANVAS_WIDTH/6; y <= centre + CANVAS_WIDTH/6; y++) { for (y = centre - CANVAS_WIDTH/6; y <= centre + CANVAS_WIDTH/6; y++) {
if (abs(centre - x)<=size && abs(centre-y)<=size) if (abs(centre - x)<=size && abs(centre-y)<=size)
tmp = map[x][y] < 0 ? door_info[NUM_DOOR_TYPES + map[x][y]].disp : map_info[map[x][y]].disp; tmp = (map[x][y]<0) ? \
door_info[NUM_DOOR_TYPES + map[x][y]].disp : \
map_info[map[x][y]].disp ;
else else
tmp = map_info[SECT_EMPTY].disp; tmp = map_info[SECT_EMPTY].disp;
strcpy(mp, tmp); strcpy(mp, tmp);
@@ -403,7 +380,6 @@ static char *StringMap(int centre, int size)
return strmap; return strmap;
} }
// ReSharper disable once CppDFAConstantParameter
static char *WorldMap(int centre, int size, int mapshape, int maptype ) static char *WorldMap(int centre, int size, int mapshape, int maptype )
{ {
static char strmap[MAX_MAP*MAX_MAP*4 + MAX_MAP*2 + 1]; static char strmap[MAX_MAP*MAX_MAP*4 + MAX_MAP*2 + 1];
@@ -411,12 +387,14 @@ static char *WorldMap(int centre, int size, int mapshape, int maptype)
int x, y; int x, y;
int xmin, xmax, ymin, ymax; int xmin, xmax, ymin, ymax;
if (maptype == MAP_COMPACT) { switch(maptype) {
case MAP_COMPACT:
xmin = centre - size; xmin = centre - size;
xmax = centre + size; xmax = centre + size;
ymin = centre - 2*size; ymin = centre - 2*size;
ymax = centre + 2*size; ymax = centre + 2*size;
} else { break;
default:
xmin = centre - CANVAS_HEIGHT/2; xmin = centre - CANVAS_HEIGHT/2;
xmax = centre + CANVAS_HEIGHT/2; xmax = centre + CANVAS_HEIGHT/2;
ymin = centre - CANVAS_WIDTH/2; ymin = centre - CANVAS_WIDTH/2;
@@ -432,8 +410,7 @@ static char *WorldMap(int centre, int size, int mapshape, int maptype)
for (y = ymin ; y <= ymax ; y++) { for (y = ymin ; y <= ymax ; y++) {
if((mapshape == MAP_RECTANGLE && abs(centre - y) <= size*2 && abs(centre - x) <= size ) || if((mapshape == MAP_RECTANGLE && abs(centre - y) <= size*2 && abs(centre - x) <= size ) ||
(mapshape == MAP_CIRCLE && (centre - x) * (centre - x) + (centre - y) * (centre - y) / 4 <= size * size + ((mapshape == MAP_CIRCLE) && (centre-x)*(centre-x) + (centre-y)*(centre-y)/4 <= (size * size + 1))) {
1)) {
strcpy(mp, world_map_info[map[x][y]].disp); strcpy(mp, world_map_info[map[x][y]].disp);
mp += strlen(world_map_info[map[x][y]].disp); mp += strlen(world_map_info[map[x][y]].disp);
} else { } else {
@@ -447,7 +424,6 @@ static char *WorldMap(int centre, int size, int mapshape, int maptype)
return strmap; return strmap;
} }
// ReSharper disable once CppDFAConstantParameter
static char *CompactStringMap(int centre, int size) static char *CompactStringMap(int centre, int size)
{ {
static char strmap[MAX_MAP*MAX_MAP*12 + MAX_MAP*2 + 1]; static char strmap[MAX_MAP*MAX_MAP*12 + MAX_MAP*2 + 1];
@@ -458,8 +434,12 @@ static char *CompactStringMap(int centre, int size)
for (x = centre - size; x <= centre + size; x++) { for (x = centre - size; x <= centre + size; x++) {
/* every column */ /* every column */
for (y = centre - size; y <= centre + size; y++) { for (y = centre - size; y <= centre + size; y++) {
strcpy(mp, map[x][y] < 0 ? compact_door_info[NUM_DOOR_TYPES + map[x][y]].disp : map_info[map[x][y]].disp); strcpy(mp, (map[x][y]<0) ? \
mp += strlen(map[x][y] < 0 ? compact_door_info[NUM_DOOR_TYPES + map[x][y]].disp : map_info[map[x][y]].disp); compact_door_info[NUM_DOOR_TYPES + map[x][y]].disp : \
map_info[map[x][y]].disp);
mp += strlen((map[x][y]<0) ? \
compact_door_info[NUM_DOOR_TYPES + map[x][y]].disp : \
map_info[map[x][y]].disp);
} }
strcpy(mp, "\r\n"); strcpy(mp, "\r\n");
mp+=2; mp+=2;
@@ -469,25 +449,24 @@ static char *CompactStringMap(int centre, int size)
} }
/* Display a nicely formatted map with a legend */ /* Display a nicely formatted map with a legend */
static void perform_map(char_data *ch, char *argument, bool worldmap) static void perform_map( struct char_data *ch, char *argument, bool worldmap )
{ {
int size = DEFAULT_MAP_SIZE; int size = DEFAULT_MAP_SIZE;
int centre, x, y, min, max; int centre, x, y, min, max;
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH], buf[MAX_STRING_LENGTH], buf1[MAX_STRING_LENGTH], buf2[ char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH], buf[MAX_STRING_LENGTH], buf1[MAX_STRING_LENGTH], buf2[MAX_STRING_LENGTH];
MAX_STRING_LENGTH];
int count = 0; int count = 0;
const int ew_size = 0, ns_size = 0; int ew_size=0, ns_size=0;
int mapshape = MAP_CIRCLE; int mapshape = MAP_CIRCLE;
two_arguments( argument, arg1 , arg2 ); two_arguments( argument, arg1 , arg2 );
if (*arg1) { if(*arg1)
size = parse_int(arg1); {
size = atoi(arg1);
} }
if (*arg2) { if (*arg2)
if (is_abbrev(arg2, "normal")) {
worldmap = FALSE; if (is_abbrev(arg2, "normal")) worldmap=FALSE;
else if (is_abbrev(arg2, "world")) else if (is_abbrev(arg2, "world")) worldmap=TRUE;
worldmap = TRUE;
else { else {
send_to_char(ch, "Usage: \tymap <distance> [ normal | world ]\tn"); send_to_char(ch, "Usage: \tymap <distance> [ normal | world ]\tn");
return; return;
@@ -513,7 +492,7 @@ static void perform_map(char_data *ch, char *argument, bool worldmap)
/* Blank the map */ /* Blank the map */
for (x = 0; x < MAX_MAP; ++x) for (x = 0; x < MAX_MAP; ++x)
for (y = 0; y < MAX_MAP; ++y) for (y = 0; y < MAX_MAP; ++y)
map[x][y] = !(y % 2) && !worldmap ? DOOR_NONE : SECT_EMPTY; map[x][y]= (!(y%2) && !worldmap) ? DOOR_NONE : SECT_EMPTY;
/* starts the mapping with the centre room */ /* starts the mapping with the centre room */
MapArea(IN_ROOM(ch), ch, centre, centre, min, max, ns_size/2, ew_size/2, worldmap); MapArea(IN_ROOM(ch), ch, centre, centre, min, max, ns_size/2, ew_size/2, worldmap);
@@ -524,7 +503,7 @@ static void perform_map(char_data *ch, char *argument, bool worldmap)
/* Feel free to put your own MUD name or header in here */ /* Feel free to put your own MUD name or header in here */
send_to_char(ch, " \tY-\tytbaMUD Map System\tY-\tn\r\n" send_to_char(ch, " \tY-\tytbaMUD Map System\tY-\tn\r\n"
"\tD .-.__--.,--.__.-.\tn\r\n" ); "\tD .-.__--.,--.__.-.\tn\r\n" );
// TODO switch to snprintf
count += sprintf(buf + count, "\tn\tn\tn%s Up\\\\", door_info[NUM_DOOR_TYPES + DOOR_UP].disp); count += sprintf(buf + count, "\tn\tn\tn%s Up\\\\", door_info[NUM_DOOR_TYPES + DOOR_UP].disp);
count += sprintf(buf + count, "\tn\tn\tn%s Down\\\\", door_info[NUM_DOOR_TYPES + DOOR_DOWN].disp); count += sprintf(buf + count, "\tn\tn\tn%s Down\\\\", door_info[NUM_DOOR_TYPES + DOOR_DOWN].disp);
count += sprintf(buf + count, "\tn%s You\\\\", map_info[SECT_HERE].disp); count += sprintf(buf + count, "\tn%s You\\\\", map_info[SECT_HERE].disp);
@@ -549,7 +528,7 @@ static void perform_map(char_data *ch, char *argument, bool worldmap)
/* Set up the map */ /* Set up the map */
memset(buf, ' ', CANVAS_WIDTH); memset(buf, ' ', CANVAS_WIDTH);
count = CANVAS_WIDTH; count = (CANVAS_WIDTH);
if(worldmap) if(worldmap)
count += sprintf(buf + count , "\r\n%s", WorldMap(centre, size, mapshape, MAP_NORMAL)); count += sprintf(buf + count , "\r\n%s", WorldMap(centre, size, mapshape, MAP_NORMAL));
else else
@@ -564,11 +543,11 @@ static void perform_map(char_data *ch, char *argument, bool worldmap)
send_to_char(ch, "%s", buf2); send_to_char(ch, "%s", buf2);
send_to_char(ch, "\tD `.-.__--.,-.__.-.-'\tn\r\n"); send_to_char(ch, "\tD `.-.__--.,-.__.-.-'\tn\r\n");
return;
} }
/* Display a string with the map beside it */ /* Display a string with the map beside it */
void str_and_map(char *str, char_data *ch, room_vnum target_room) void str_and_map(char *str, struct char_data *ch, room_vnum target_room ) {
{
int size, centre, x, y, min, max, char_size; int size, centre, x, y, min, max, char_size;
int ew_size=0, ns_size=0; int ew_size=0, ns_size=0;
bool worldmap; bool worldmap;
@@ -593,7 +572,7 @@ void str_and_map(char *str, char_data *ch, room_vnum target_room)
for (x = 0; x < MAX_MAP; ++x) for (x = 0; x < MAX_MAP; ++x)
for (y = 0; y < MAX_MAP; ++y) for (y = 0; y < MAX_MAP; ++y)
map[x][y] = !(y % 2) && !worldmap ? DOOR_NONE : SECT_EMPTY; map[x][y]= (!(y%2) && !worldmap) ? DOOR_NONE : SECT_EMPTY;
/* starts the mapping with the center room */ /* starts the mapping with the center room */
MapArea(target_room, ch, centre, centre, min, max, ns_size/2, ew_size/2, worldmap ); MapArea(target_room, ch, centre, centre, min, max, ns_size/2, ew_size/2, worldmap );
@@ -603,32 +582,26 @@ void str_and_map(char *str, char_data *ch, room_vnum target_room)
if(worldmap) if(worldmap)
char_size = size * 4 + 5; char_size = size * 4 + 5;
else else
char_size = 3 * (size + 1) + size + 4; char_size = 3*(size+1) + (size) + 4;
if(worldmap) if(worldmap)
send_to_char(ch, "%s", strpaste(strfrmt(str, GET_SCREEN_WIDTH(ch) - char_size, size * 2 + 1, FALSE, TRUE, TRUE), send_to_char(ch, "%s", strpaste(strfrmt(str, GET_SCREEN_WIDTH(ch) - char_size, size*2 + 1, FALSE, TRUE, TRUE), WorldMap(centre, size, MAP_CIRCLE, MAP_COMPACT), " \tn"));
WorldMap(centre, size, MAP_CIRCLE, MAP_COMPACT), " \tn"));
else else
send_to_char(ch, "%s", strpaste(strfrmt(str, GET_SCREEN_WIDTH(ch) - char_size, size * 2 + 1, FALSE, TRUE, TRUE), send_to_char(ch, "%s", strpaste(strfrmt(str, GET_SCREEN_WIDTH(ch) - char_size, size*2 + 1, FALSE, TRUE, TRUE), CompactStringMap(centre, size), " \tn"));
CompactStringMap(centre, size), " \tn"));
} }
static bool show_worldmap(const char_data *ch) static bool show_worldmap(struct char_data *ch) {
{
room_rnum rm = IN_ROOM(ch); room_rnum rm = IN_ROOM(ch);
zone_rnum zn = GET_ROOM_ZONE(rm); zone_rnum zn = GET_ROOM_ZONE(rm);
if (ROOM_FLAGGED(rm, ROOM_WORLDMAP)) if (ROOM_FLAGGED(rm, ROOM_WORLDMAP)) return TRUE;
return TRUE; if (ZONE_FLAGGED(zn, ZONE_WORLDMAP)) return TRUE;
if (ZONE_FLAGGED(zn, ZONE_WORLDMAP))
return TRUE;
return FALSE; return FALSE;
} }
ACMD(do_map) ACMD(do_map) {
{
if (!can_see_map(ch)) { if (!can_see_map(ch)) {
send_to_char(ch, "Sorry, the map is disabled!\r\n"); send_to_char(ch, "Sorry, the map is disabled!\r\n");
return; return;

View File

@@ -16,8 +16,8 @@
#define MAP_IMM_ONLY 2 #define MAP_IMM_ONLY 2
/* Exported function prototypes */ /* Exported function prototypes */
bool can_see_map(const char_data *ch); bool can_see_map(struct char_data *ch);
void str_and_map(char *str, char_data *ch, room_vnum target_room); void str_and_map(char *str, struct char_data *ch, room_vnum target_room );
ACMD(do_map); ACMD(do_map);
#endif /* ASCIIMAP_H_*/ #endif /* ASCIIMAP_H_*/

View File

@@ -14,6 +14,7 @@
#include "utils.h" #include "utils.h"
#include "comm.h" #include "comm.h"
#include "interpreter.h" #include "interpreter.h"
#include "handler.h"
#include "db.h" #include "db.h"
#include "ban.h" #include "ban.h"
@@ -27,7 +28,7 @@ static char *invalid_list[MAX_INVALID_NAMES];
/* local utility functions */ /* local utility functions */
static void write_ban_list(void); static void write_ban_list(void);
static void write_one_node(FILE *fp, struct ban_list_element *node); static void _write_one_node(FILE *fp, struct ban_list_element *node);
static const char *ban_types[] = { static const char *ban_types[] = {
"no", "no",
@@ -40,27 +41,27 @@ static const char *ban_types[] = {
void load_banned(void) void load_banned(void)
{ {
FILE *fl; FILE *fl;
int i; int i, date;
char site_name[BANNED_SITE_LENGTH + 1], ban_type[100]; char site_name[BANNED_SITE_LENGTH + 1], ban_type[100];
char name[MAX_NAME_LENGTH + 1], date_str[30]; char name[MAX_NAME_LENGTH + 1];
struct ban_list_element *next_node; struct ban_list_element *next_node;
ban_list = 0; ban_list = 0;
if ((fl = fopen(BAN_FILE, "r")) != NULL) { if (!(fl = fopen(BAN_FILE, "r"))) {
if (errno != ENOENT) { if (errno != ENOENT) {
log("SYSERR: Unable to open banfile '%s': %s", BAN_FILE, strerror(errno)); log("SYSERR: Unable to open banfile '%s': %s", BAN_FILE, strerror(errno));
} else } else
log(" Ban file '%s' doesn't exist.", BAN_FILE); log(" Ban file '%s' doesn't exist.", BAN_FILE);
return; return;
} }
while (fscanf(fl, " %s %s %s %s ", ban_type, site_name, date_str, name) == 4) { while (fscanf(fl, " %s %s %d %s ", ban_type, site_name, &date, name) == 4) {
CREATE(next_node, struct ban_list_element, 1); CREATE(next_node, struct ban_list_element, 1);
strncpy(next_node->site, site_name, BANNED_SITE_LENGTH); /* strncpy: OK (n_n->site:BANNED_SITE_LENGTH+1) */ strncpy(next_node->site, site_name, BANNED_SITE_LENGTH); /* strncpy: OK (n_n->site:BANNED_SITE_LENGTH+1) */
next_node->site[BANNED_SITE_LENGTH] = '\0'; next_node->site[BANNED_SITE_LENGTH] = '\0';
strncpy(next_node->name, name, MAX_NAME_LENGTH); /* strncpy: OK (n_n->name:MAX_NAME_LENGTH+1) */ strncpy(next_node->name, name, MAX_NAME_LENGTH); /* strncpy: OK (n_n->name:MAX_NAME_LENGTH+1) */
next_node->name[MAX_NAME_LENGTH] = '\0'; next_node->name[MAX_NAME_LENGTH] = '\0';
next_node->date = parse_int(date_str); next_node->date = date;
for (i = BAN_NOT; i <= BAN_ALL; i++) for (i = BAN_NOT; i <= BAN_ALL; i++)
if (!strcmp(ban_type, ban_types[i])) if (!strcmp(ban_type, ban_types[i]))
@@ -80,7 +81,7 @@ int isbanned(char *hostname)
char *nextchar; char *nextchar;
if (!hostname || !*hostname) if (!hostname || !*hostname)
return 0; return (0);
i = 0; i = 0;
for (nextchar = hostname; *nextchar; nextchar++) for (nextchar = hostname; *nextchar; nextchar++)
@@ -90,15 +91,15 @@ int isbanned(char *hostname)
if (strstr(hostname, banned_node->site)) /* if hostname is a substring */ if (strstr(hostname, banned_node->site)) /* if hostname is a substring */
i = MAX(i, banned_node->type); i = MAX(i, banned_node->type);
return i; return (i);
} }
static void write_one_node(FILE *fp, struct ban_list_element *node) // NOLINT(*-no-recursion) static void _write_one_node(FILE *fp, struct ban_list_element *node)
{ {
if (node) { if (node) {
write_one_node(fp, node->next); _write_one_node(fp, node->next);
fprintf(fp, "%s %s %ld %s\n", ban_types[node->type], fprintf(fp, "%s %s %ld %s\n", ban_types[node->type],
node->site, node->date, node->name); node->site, (long) node->date, node->name);
} }
} }
@@ -106,12 +107,13 @@ static void write_ban_list(void)
{ {
FILE *fl; FILE *fl;
if ((fl = fopen(BAN_FILE, "w")) == NULL) { if (!(fl = fopen(BAN_FILE, "w"))) {
perror("SYSERR: Unable to open '" BAN_FILE "' for writing"); perror("SYSERR: Unable to open '" BAN_FILE "' for writing");
return; return;
} }
write_one_node(fl, ban_list); /* recursively write from end to start */ _write_one_node(fl, ban_list);/* recursively write from end to start */
fclose(fl); fclose(fl);
return;
} }
#define BAN_LIST_FORMAT "%-25.25s %-8.8s %-15.15s %-16.16s\r\n" #define BAN_LIST_FORMAT "%-25.25s %-8.8s %-15.15s %-16.16s\r\n"
@@ -214,7 +216,6 @@ ACMD(do_unban)
REMOVE_FROM_LIST(ban_node, ban_list, next); REMOVE_FROM_LIST(ban_node, ban_list, next);
send_to_char(ch, "Site unbanned.\r\n"); send_to_char(ch, "Site unbanned.\r\n");
mudlog(NRM, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "%s removed the %s-player ban on %s.", mudlog(NRM, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "%s removed the %s-player ban on %s.",
// ReSharper disable once CppDFANullDereference
GET_NAME(ch), ban_types[ban_node->type], ban_node->site); GET_NAME(ch), ban_types[ban_node->type], ban_node->site);
free(ban_node); free(ban_node);
@@ -222,11 +223,12 @@ ACMD(do_unban)
} }
/* Check for invalid names (i.e., profanity, etc.) Written by Sharon P Garza. */ /* Check for invalid names (i.e., profanity, etc.) Written by Sharon P Garza. */
int valid_name(const char *newname) int valid_name(char *newname)
{ {
int i, vowels = 0; int i, vowels = 0;
descriptor_data *dt; struct descriptor_data *dt;
char tempname[MAX_INPUT_LENGTH]; char tempname[MAX_INPUT_LENGTH];
/* Make sure someone isn't trying to create this same name. We want to do a /* Make sure someone isn't trying to create this same name. We want to do a
@@ -288,7 +290,7 @@ void read_invalid_list(void)
FILE *fp; FILE *fp;
char temp[256]; char temp[256];
if ((fp = fopen(XNAME_FILE, "r")) != NULL) { if (!(fp = fopen(XNAME_FILE, "r"))) {
perror("SYSERR: Unable to open '" XNAME_FILE "' for reading"); perror("SYSERR: Unable to open '" XNAME_FILE "' for reading");
return; return;
} }

View File

@@ -37,7 +37,7 @@ struct ban_list_element {
/* Utility Functions */ /* Utility Functions */
void load_banned(void); void load_banned(void);
int isbanned(char *hostname); int isbanned(char *hostname);
int valid_name(const char *newname); int valid_name(char *newname);
void read_invalid_list(void); void read_invalid_list(void);
void free_invalid_list(void); void free_invalid_list(void);
/* Command functions without subcommands */ /* Command functions without subcommands */

View File

@@ -53,6 +53,7 @@ struct board_info_type board_info[NUM_OF_BOARDS] = {
{1226, 0, 0, LVL_IMPL, LIB_ETC "board.builder", 0}, {1226, 0, 0, LVL_IMPL, LIB_ETC "board.builder", 0},
{1227, 0, 0, LVL_IMPL, LIB_ETC "board.staff", 0}, {1227, 0, 0, LVL_IMPL, LIB_ETC "board.staff", 0},
{1228, 0, 0, LVL_IMPL, LIB_ETC "board.advertising", 0}, {1228, 0, 0, LVL_IMPL, LIB_ETC "board.advertising", 0},
{4900, 0, 0, LVL_IMMORT, LIB_ETC "board.grenzland", 0},
}; };
/* local (file scope) global variables */ /* local (file scope) global variables */
@@ -63,7 +64,7 @@ static struct board_msginfo msg_index[NUM_OF_BOARDS][MAX_BOARD_MESSAGES];
/* local static utility functions */ /* local static utility functions */
static int find_slot(void); static int find_slot(void);
static int find_board(const char_data *ch); static int find_board(struct char_data *ch);
static void init_boards(void); static void init_boards(void);
static void board_reset_board(int board_type); static void board_reset_board(int board_type);
static void board_clear_board(int board_type); static void board_clear_board(int board_type);
@@ -75,29 +76,29 @@ static int find_slot(void)
for (i = 0; i < INDEX_SIZE; i++) for (i = 0; i < INDEX_SIZE; i++)
if (!msg_storage_taken[i]) { if (!msg_storage_taken[i]) {
msg_storage_taken[i] = 1; msg_storage_taken[i] = 1;
return i; return (i);
} }
return -1; return (-1);
} }
/* search the room ch is standing in to find which board he's looking at */ /* search the room ch is standing in to find which board he's looking at */
static int find_board(const char_data *ch) static int find_board(struct char_data *ch)
{ {
obj_data *obj; struct obj_data *obj;
int i; int i;
for (obj = world[IN_ROOM(ch)].contents; obj; obj = obj->next_content) for (obj = world[IN_ROOM(ch)].contents; obj; obj = obj->next_content)
for (i = 0; i < NUM_OF_BOARDS; i++) for (i = 0; i < NUM_OF_BOARDS; i++)
if (BOARD_RNUM(i) == GET_OBJ_RNUM(obj)) if (BOARD_RNUM(i) == GET_OBJ_RNUM(obj))
return i; return (i);
if (GET_LEVEL(ch) >= LVL_IMMORT) if (GET_LEVEL(ch) >= LVL_IMMORT)
for (obj = ch->carrying; obj; obj = obj->next_content) for (obj = ch->carrying; obj; obj = obj->next_content)
for (i = 0; i < NUM_OF_BOARDS; i++) for (i = 0; i < NUM_OF_BOARDS; i++)
if (BOARD_RNUM(i) == GET_OBJ_RNUM(obj)) if (BOARD_RNUM(i) == GET_OBJ_RNUM(obj))
return i; return (i);
return -1; return (-1);
} }
static void init_boards(void) static void init_boards(void)
@@ -117,7 +118,7 @@ static void init_boards(void)
} }
num_of_msgs[i] = 0; num_of_msgs[i] = 0;
for (j = 0; j < MAX_BOARD_MESSAGES; j++) { for (j = 0; j < MAX_BOARD_MESSAGES; j++) {
memset((char *)&msg_index[i][j], 0, sizeof(struct board_msginfo)); memset((char *) &(msg_index[i][j]), 0, sizeof(struct board_msginfo));
msg_index[i][j].slot_num = -1; msg_index[i][j].slot_num = -1;
} }
board_load_board(i); board_load_board(i);
@@ -131,7 +132,7 @@ SPECIAL(gen_board)
{ {
int board_type; int board_type;
static int loaded = 0; static int loaded = 0;
obj_data *board = (obj_data *)me; struct obj_data *board = (struct obj_data *)me;
/* These were originally globals for some unknown reason. */ /* These were originally globals for some unknown reason. */
int ACMD_READ, ACMD_LOOK, ACMD_EXAMINE, ACMD_WRITE, ACMD_REMOVE; int ACMD_READ, ACMD_LOOK, ACMD_EXAMINE, ACMD_WRITE, ACMD_REMOVE;
@@ -141,7 +142,7 @@ SPECIAL(gen_board)
loaded = 1; loaded = 1;
} }
if (!ch->desc) if (!ch->desc)
return 0; return (0);
ACMD_READ = find_command("read"); ACMD_READ = find_command("read");
ACMD_WRITE = find_command("write"); ACMD_WRITE = find_command("write");
@@ -151,42 +152,41 @@ SPECIAL(gen_board)
if (cmd != ACMD_WRITE && cmd != ACMD_LOOK && cmd != ACMD_EXAMINE && if (cmd != ACMD_WRITE && cmd != ACMD_LOOK && cmd != ACMD_EXAMINE &&
cmd != ACMD_READ && cmd != ACMD_REMOVE) cmd != ACMD_READ && cmd != ACMD_REMOVE)
return 0; return (0);
if ((board_type = find_board(ch)) == -1) { if ((board_type = find_board(ch)) == -1) {
log("SYSERR: degenerate board! (what the hell...)"); log("SYSERR: degenerate board! (what the hell...)");
return 0; return (0);
} }
if (cmd == ACMD_WRITE) if (cmd == ACMD_WRITE)
return board_write_message(board_type, ch, argument, board); return (board_write_message(board_type, ch, argument, board));
if (cmd == ACMD_LOOK || cmd == ACMD_EXAMINE) else if (cmd == ACMD_LOOK || cmd == ACMD_EXAMINE)
return board_show_board(board_type, ch, argument, board); return (board_show_board(board_type, ch, argument, board));
if (cmd == ACMD_READ) else if (cmd == ACMD_READ)
return board_display_msg(board_type, ch, argument, board); return (board_display_msg(board_type, ch, argument, board));
if (cmd == ACMD_REMOVE) else if (cmd == ACMD_REMOVE)
return board_remove_msg(board_type, ch, argument, board); return (board_remove_msg(board_type, ch, argument, board));
else
return 0; return (0);
} }
// ReSharper disable once CppDFAConstantFunctionResult int board_write_message(int board_type, struct char_data *ch, char *arg, struct obj_data *board)
int board_write_message(int board_type, char_data *ch, char *arg, obj_data *board)
{ {
time_t ct; time_t ct;
char buf[MAX_INPUT_LENGTH], buf2[MAX_NAME_LENGTH + 3], tmstr[100]; char buf[MAX_INPUT_LENGTH], buf2[MAX_NAME_LENGTH + 3], tmstr[100];
if (GET_LEVEL(ch) < WRITE_LVL(board_type)) { if (GET_LEVEL(ch) < WRITE_LVL(board_type)) {
send_to_char(ch, "You are not holy enough to write on this board.\r\n"); send_to_char(ch, "You are not holy enough to write on this board.\r\n");
return 1; return (1);
} }
if (num_of_msgs[board_type] >= MAX_BOARD_MESSAGES) { if (num_of_msgs[board_type] >= MAX_BOARD_MESSAGES) {
send_to_char(ch, "The board is full.\r\n"); send_to_char(ch, "The board is full.\r\n");
return 1; return (1);
} }
if ((NEW_MSG_INDEX(board_type).slot_num = find_slot()) == -1) { if ((NEW_MSG_INDEX(board_type).slot_num = find_slot()) == -1) {
send_to_char(ch, "The board is malfunctioning - sorry.\r\n"); send_to_char(ch, "The board is malfunctioning - sorry.\r\n");
log("SYSERR: Board: failed to find empty slot on write."); log("SYSERR: Board: failed to find empty slot on write.");
return 1; return (1);
} }
/* skip blanks */ /* skip blanks */
skip_spaces(&arg); skip_spaces(&arg);
@@ -197,7 +197,7 @@ int board_write_message(int board_type, char_data *ch, char *arg, obj_data *boar
if (!*arg) { if (!*arg) {
send_to_char(ch, "We must have a headline!\r\n"); send_to_char(ch, "We must have a headline!\r\n");
return 1; return (1);
} }
ct = time(0); ct = time(0);
strftime(tmstr, sizeof(tmstr), "%a %b %d %Y", localtime(&ct)); strftime(tmstr, sizeof(tmstr), "%a %b %d %Y", localtime(&ct));
@@ -205,41 +205,40 @@ int board_write_message(int board_type, char_data *ch, char *arg, obj_data *boar
snprintf(buf2, sizeof(buf2), "(%s)", GET_NAME(ch)); snprintf(buf2, sizeof(buf2), "(%s)", GET_NAME(ch));
snprintf(buf, sizeof(buf), "%s %-12s :: %s", tmstr, buf2, arg); snprintf(buf, sizeof(buf), "%s %-12s :: %s", tmstr, buf2, arg);
NEW_MSG_INDEX(board_type).heading = strdup(buf); NEW_MSG_INDEX(board_type).heading = strdup(buf);
NEW_MSG_INDEX(board_type).level = (int)GET_LEVEL(ch); NEW_MSG_INDEX(board_type).level = GET_LEVEL(ch);
send_to_char(ch, "Write your message.\r\n"); send_to_char(ch, "Write your message.\r\n");
send_editor_help(ch->desc); send_editor_help(ch->desc);
act("$n starts to write a message.", TRUE, ch, 0, 0, TO_ROOM); act("$n starts to write a message.", TRUE, ch, 0, 0, TO_ROOM);
string_write(ch->desc, &msg_storage[NEW_MSG_INDEX(board_type).slot_num], string_write(ch->desc, &(msg_storage[NEW_MSG_INDEX(board_type).slot_num]),
MAX_MESSAGE_LENGTH, board_type + BOARD_MAGIC, NULL); MAX_MESSAGE_LENGTH, board_type + BOARD_MAGIC, NULL);
num_of_msgs[board_type]++; num_of_msgs[board_type]++;
return 1; return (1);
} }
int board_show_board(int board_type, char_data *ch, char *arg, obj_data *board) int board_show_board(int board_type, struct char_data *ch, char *arg, struct obj_data *board)
{ {
int i; int i;
char tmp[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH]; char tmp[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH];
if (!ch->desc) if (!ch->desc)
return 0; return (0);
one_argument(arg, tmp); one_argument(arg, tmp);
if (!*tmp || !isname(tmp, board->name)) if (!*tmp || !isname(tmp, board->name))
return 0; return (0);
if (GET_LEVEL(ch) < READ_LVL(board_type)) { if (GET_LEVEL(ch) < READ_LVL(board_type)) {
send_to_char(ch, "You try but fail to understand the holy words.\r\n"); send_to_char(ch, "You try but fail to understand the holy words.\r\n");
return 1; return (1);
} }
act("$n studies the board.", TRUE, ch, 0, 0, TO_ROOM); act("$n studies the board.", TRUE, ch, 0, 0, TO_ROOM);
if (!num_of_msgs[board_type]) if (!num_of_msgs[board_type])
send_to_char( send_to_char(ch, "This is a bulletin board. Usage: READ/REMOVE <messg #>, WRITE <header>.\r\nThe board is empty.\r\n");
ch, "This is a bulletin board. Usage: READ/REMOVE <messg #>, WRITE <header>.\r\nThe board is empty.\r\n");
else { else {
size_t len = 0; size_t len = 0;
int nlen; int nlen;
@@ -272,40 +271,40 @@ int board_show_board(int board_type, char_data *ch, char *arg, obj_data *board)
#endif #endif
page_string(ch->desc, buf, TRUE); page_string(ch->desc, buf, TRUE);
} }
return 1; return (1);
fubar: fubar:
log("SYSERR: Board %d is fubar'd.", board_type); log("SYSERR: Board %d is fubar'd.", board_type);
send_to_char(ch, "Sorry, the board isn't working.\r\n"); send_to_char(ch, "Sorry, the board isn't working.\r\n");
return 1; return (1);
} }
int board_display_msg(int board_type, char_data *ch, char *arg, obj_data *board) int board_display_msg(int board_type, struct char_data *ch, char *arg, struct obj_data *board)
{ {
char number[MAX_INPUT_LENGTH], buffer[MAX_STRING_LENGTH]; char number[MAX_INPUT_LENGTH], buffer[MAX_STRING_LENGTH];
int msg, ind; int msg, ind;
one_argument(arg, number); one_argument(arg, number);
if (!*number) if (!*number)
return 0; return (0);
if (isname(number, board->name)) /* so "read board" works */ if (isname(number, board->name)) /* so "read board" works */
return board_show_board(board_type, ch, arg, board); return (board_show_board(board_type, ch, arg, board));
if (!is_number(number)) /* read 2.mail, look 2.sword */ if (!is_number(number)) /* read 2.mail, look 2.sword */
return 0; return (0);
if ((msg = parse_int(number)) == 0) if (!(msg = atoi(number)))
return 0; return (0);
if (GET_LEVEL(ch) < READ_LVL(board_type)) { if (GET_LEVEL(ch) < READ_LVL(board_type)) {
send_to_char(ch, "You try but fail to understand the holy words.\r\n"); send_to_char(ch, "You try but fail to understand the holy words.\r\n");
return 1; return (1);
} }
if (!num_of_msgs[board_type]) { if (!num_of_msgs[board_type]) {
send_to_char(ch, "The board is empty!\r\n"); send_to_char(ch, "The board is empty!\r\n");
return 1; return (1);
} }
if (msg < 1 || msg > num_of_msgs[board_type]) { if (msg < 1 || msg > num_of_msgs[board_type]) {
send_to_char(ch, "That message exists only in your imagination.\r\n"); send_to_char(ch, "That message exists only in your imagination.\r\n");
return 1; return (1);
} }
#if NEWEST_AT_TOP #if NEWEST_AT_TOP
ind = num_of_msgs[board_type] - msg; ind = num_of_msgs[board_type] - msg;
@@ -316,15 +315,15 @@ int board_display_msg(int board_type, char_data *ch, char *arg, obj_data *board)
MSG_SLOTNUM(board_type, ind) >= INDEX_SIZE) { MSG_SLOTNUM(board_type, ind) >= INDEX_SIZE) {
send_to_char(ch, "Sorry, the board is not working.\r\n"); send_to_char(ch, "Sorry, the board is not working.\r\n");
log("SYSERR: Board is screwed up. (Room #%d)", GET_ROOM_VNUM(IN_ROOM(ch))); log("SYSERR: Board is screwed up. (Room #%d)", GET_ROOM_VNUM(IN_ROOM(ch)));
return 1; return (1);
} }
if (!MSG_HEADING(board_type, ind)) { if (!(MSG_HEADING(board_type, ind))) {
send_to_char(ch, "That message appears to be screwed up.\r\n"); send_to_char(ch, "That message appears to be screwed up.\r\n");
return 1; return (1);
} }
if (!msg_storage[MSG_SLOTNUM(board_type, ind)]) { if (!(msg_storage[MSG_SLOTNUM(board_type, ind)])) {
send_to_char(ch, "That message seems to be empty.\r\n"); send_to_char(ch, "That message seems to be empty.\r\n");
return 1; return (1);
} }
snprintf(buffer, sizeof(buffer), "Message %d : %s\r\n\r\n%s\r\n", msg, snprintf(buffer, sizeof(buffer), "Message %d : %s\r\n\r\n%s\r\n", msg,
MSG_HEADING(board_type, ind), MSG_HEADING(board_type, ind),
@@ -332,29 +331,29 @@ int board_display_msg(int board_type, char_data *ch, char *arg, obj_data *board)
page_string(ch->desc, buffer, TRUE); page_string(ch->desc, buffer, TRUE);
return 1; return (1);
} }
int board_remove_msg(int board_type, char_data *ch, char *arg, obj_data *board) int board_remove_msg(int board_type, struct char_data *ch, char *arg, struct obj_data *board)
{ {
int ind, msg, slot_num; int ind, msg, slot_num;
char number[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH]; char number[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH];
descriptor_data *d; struct descriptor_data *d;
one_argument(arg, number); one_argument(arg, number);
if (!*number || !is_number(number)) if (!*number || !is_number(number))
return 0; return (0);
if ((msg = parse_int(number)) == 0) if (!(msg = atoi(number)))
return 0; return (0);
if (!num_of_msgs[board_type]) { if (!num_of_msgs[board_type]) {
send_to_char(ch, "The board is empty!\r\n"); send_to_char(ch, "The board is empty!\r\n");
return 1; return (1);
} }
if (msg < 1 || msg > num_of_msgs[board_type]) { if (msg < 1 || msg > num_of_msgs[board_type]) {
send_to_char(ch, "That message exists only in your imagination.\r\n"); send_to_char(ch, "That message exists only in your imagination.\r\n");
return 1; return (1);
} }
#if NEWEST_AT_TOP #if NEWEST_AT_TOP
ind = num_of_msgs[board_type] - msg; ind = num_of_msgs[board_type] - msg;
@@ -363,28 +362,28 @@ int board_remove_msg(int board_type, char_data *ch, char *arg, obj_data *board)
#endif #endif
if (!MSG_HEADING(board_type, ind)) { if (!MSG_HEADING(board_type, ind)) {
send_to_char(ch, "That message appears to be screwed up.\r\n"); send_to_char(ch, "That message appears to be screwed up.\r\n");
return 1; return (1);
} }
snprintf(buf, sizeof(buf), "(%s)", GET_NAME(ch)); snprintf(buf, sizeof(buf), "(%s)", GET_NAME(ch));
if (GET_LEVEL(ch) < REMOVE_LVL(board_type) && if (GET_LEVEL(ch) < REMOVE_LVL(board_type) &&
!strstr(MSG_HEADING(board_type, ind), buf)) { !(strstr(MSG_HEADING(board_type, ind), buf))) {
send_to_char(ch, "You are not holy enough to remove other people's messages.\r\n"); send_to_char(ch, "You are not holy enough to remove other people's messages.\r\n");
return 1; return (1);
} }
if (GET_LEVEL(ch) < MSG_LEVEL(board_type, ind)) { if (GET_LEVEL(ch) < MSG_LEVEL(board_type, ind)) {
send_to_char(ch, "You can't remove a message holier than yourself.\r\n"); send_to_char(ch, "You can't remove a message holier than yourself.\r\n");
return 1; return (1);
} }
slot_num = MSG_SLOTNUM(board_type, ind); slot_num = MSG_SLOTNUM(board_type, ind);
if (slot_num < 0 || slot_num >= INDEX_SIZE) { if (slot_num < 0 || slot_num >= INDEX_SIZE) {
send_to_char(ch, "That message is majorly screwed up.\r\n"); send_to_char(ch, "That message is majorly screwed up.\r\n");
log("SYSERR: The board is seriously screwed up. (Room #%d)", GET_ROOM_VNUM(IN_ROOM(ch))); log("SYSERR: The board is seriously screwed up. (Room #%d)", GET_ROOM_VNUM(IN_ROOM(ch)));
return 1; return (1);
} }
for (d = descriptor_list; d; d = d->next) for (d = descriptor_list; d; d = d->next)
if (STATE(d) == CON_PLAYING && d->str == &msg_storage[slot_num]) { if (STATE(d) == CON_PLAYING && d->str == &(msg_storage[slot_num])) {
send_to_char(ch, "At least wait until the author is finished before removing it!\r\n"); send_to_char(ch, "At least wait until the author is finished before removing it!\r\n");
return 1; return (1);
} }
if (msg_storage[slot_num]) if (msg_storage[slot_num])
free(msg_storage[slot_num]); free(msg_storage[slot_num]);
@@ -405,7 +404,7 @@ int board_remove_msg(int board_type, char_data *ch, char *arg, obj_data *board)
act(buf, FALSE, ch, 0, 0, TO_ROOM); act(buf, FALSE, ch, 0, 0, TO_ROOM);
board_save_board(board_type); board_save_board(board_type);
return 1; return (1);
} }
void board_save_board(int board_type) void board_save_board(int board_type)
@@ -418,26 +417,26 @@ void board_save_board(int board_type)
remove(FILENAME(board_type)); remove(FILENAME(board_type));
return; return;
} }
if ((fl = fopen(FILENAME(board_type), "wb")) == NULL) { if (!(fl = fopen(FILENAME(board_type), "wb"))) {
perror("SYSERR: Error writing board"); perror("SYSERR: Error writing board");
return; return;
} }
fwrite(&num_of_msgs[board_type], sizeof(int), 1, fl); fwrite(&(num_of_msgs[board_type]), sizeof(int), 1, fl);
for (i = 0; i < num_of_msgs[board_type]; i++) { for (i = 0; i < num_of_msgs[board_type]; i++) {
if ((tmp1 = MSG_HEADING(board_type, i)) != NULL) if ((tmp1 = MSG_HEADING(board_type, i)) != NULL)
msg_index[board_type][i].heading_len = (int)strlen(tmp1) + 1; msg_index[board_type][i].heading_len = strlen(tmp1) + 1;
else else
msg_index[board_type][i].heading_len = 0; msg_index[board_type][i].heading_len = 0;
if (MSG_SLOTNUM(board_type, i) < 0 || if (MSG_SLOTNUM(board_type, i) < 0 ||
MSG_SLOTNUM(board_type, i) >= INDEX_SIZE || MSG_SLOTNUM(board_type, i) >= INDEX_SIZE ||
(tmp2 = msg_storage[MSG_SLOTNUM(board_type, i)]) == NULL) (!(tmp2 = msg_storage[MSG_SLOTNUM(board_type, i)])))
msg_index[board_type][i].message_len = 0; msg_index[board_type][i].message_len = 0;
else else
msg_index[board_type][i].message_len = (int)strlen(tmp2) + 1; msg_index[board_type][i].message_len = strlen(tmp2) + 1;
fwrite(&msg_index[board_type][i], sizeof(struct board_msginfo), 1, fl); fwrite(&(msg_index[board_type][i]), sizeof(struct board_msginfo), 1, fl);
if (tmp1) if (tmp1)
fwrite(tmp1, sizeof(char), msg_index[board_type][i].heading_len, fl); fwrite(tmp1, sizeof(char), msg_index[board_type][i].heading_len, fl);
if (tmp2) if (tmp2)
@@ -453,12 +452,12 @@ void board_load_board(int board_type)
int i, len1, len2; int i, len1, len2;
char *tmp1, *tmp2; char *tmp1, *tmp2;
if ((fl = fopen(FILENAME(board_type), "rb")) == NULL) { if (!(fl = fopen(FILENAME(board_type), "rb"))) {
if (errno != ENOENT) if (errno != ENOENT)
perror("SYSERR: Error reading board"); perror("SYSERR: Error reading board");
return; return;
} }
if (fread(&num_of_msgs[board_type], sizeof(int), 1, fl) != 1) if (fread(&(num_of_msgs[board_type]), sizeof(int), 1, fl) != 1)
return; return;
if (num_of_msgs[board_type] < 1 || num_of_msgs[board_type] > MAX_BOARD_MESSAGES) { if (num_of_msgs[board_type] < 1 || num_of_msgs[board_type] > MAX_BOARD_MESSAGES) {
log("SYSERR: Board file %d corrupt. Resetting.", board_type); log("SYSERR: Board file %d corrupt. Resetting.", board_type);
@@ -466,7 +465,7 @@ void board_load_board(int board_type)
return; return;
} }
for (i = 0; i < num_of_msgs[board_type]; i++) { for (i = 0; i < num_of_msgs[board_type]; i++) {
if (fread(&msg_index[board_type][i], sizeof(struct board_msginfo), 1, fl) != 1) { if (fread(&(msg_index[board_type][i]), sizeof(struct board_msginfo), 1, fl) != 1) {
if (feof(fl)) if (feof(fl))
log("SYSERR: Unexpected EOF encountered in board file %d! Resetting.", board_type); log("SYSERR: Unexpected EOF encountered in board file %d! Resetting.", board_type);
else if (ferror(fl)) else if (ferror(fl))
@@ -542,7 +541,7 @@ void board_clear_board(int board_type)
if (msg_storage[MSG_SLOTNUM(board_type, i)]) if (msg_storage[MSG_SLOTNUM(board_type, i)])
free(msg_storage[MSG_SLOTNUM(board_type, i)]); free(msg_storage[MSG_SLOTNUM(board_type, i)]);
msg_storage_taken[MSG_SLOTNUM(board_type, i)] = 0; msg_storage_taken[MSG_SLOTNUM(board_type, i)] = 0;
memset((char *)&msg_index[board_type][i], 0, sizeof(struct board_msginfo)); memset((char *)&(msg_index[board_type][i]),0,sizeof(struct board_msginfo));
msg_index[board_type][i].slot_num = -1; msg_index[board_type][i].slot_num = -1;
} }
num_of_msgs[board_type] = 0; num_of_msgs[board_type] = 0;

View File

@@ -13,7 +13,7 @@
#ifndef _BOARDS_H_ #ifndef _BOARDS_H_
#define _BOARDS_H_ #define _BOARDS_H_
#define NUM_OF_BOARDS 7 /* change if needed! */ #define NUM_OF_BOARDS 8 /* change if needed! */
#define MAX_BOARD_MESSAGES 60 /* arbitrary -- change if needed */ #define MAX_BOARD_MESSAGES 60 /* arbitrary -- change if needed */
#define MAX_MESSAGE_LENGTH 4096 /* arbitrary -- change if needed */ #define MAX_MESSAGE_LENGTH 4096 /* arbitrary -- change if needed */
@@ -51,10 +51,10 @@ struct board_info_type {
#define MSG_LEVEL(i, j) (msg_index[i][j].level) #define MSG_LEVEL(i, j) (msg_index[i][j].level)
SPECIAL(gen_board); SPECIAL(gen_board);
int board_display_msg(int board_type, char_data *ch, char *arg, obj_data *board); int board_display_msg(int board_type, struct char_data *ch, char *arg, struct obj_data *board);
int board_show_board(int board_type, char_data *ch, char *arg, obj_data *board); int board_show_board(int board_type, struct char_data *ch, char *arg, struct obj_data *board);
int board_remove_msg(int board_type, char_data *ch, char *arg, obj_data *board); int board_remove_msg(int board_type, struct char_data *ch, char *arg, struct obj_data *board);
int board_write_message(int board_type, char_data *ch, char *arg, obj_data *board); int board_write_message(int board_type, struct char_data *ch, char *arg, struct obj_data *board);
void board_save_board(int board_type); void board_save_board(int board_type);
void board_load_board(int board_type); void board_load_board(int board_type);
void board_clear_all(void); void board_clear_all(void);

View File

@@ -13,6 +13,7 @@
#include "structs.h" #include "structs.h"
#include "utils.h" #include "utils.h"
#include "comm.h" #include "comm.h"
#include "interpreter.h"
#include "handler.h" #include "handler.h"
#include "db.h" #include "db.h"
#include "spells.h" #include "spells.h"
@@ -29,18 +30,18 @@
/* local, file scope restricted functions */ /* local, file scope restricted functions */
static mob_vnum castle_virtual(mob_vnum offset); static mob_vnum castle_virtual(mob_vnum offset);
static room_rnum castle_real_room(room_vnum roomoffset); static room_rnum castle_real_room(room_vnum roomoffset);
static char_data *find_npc_by_name(const char_data *chAtChar, const char *pszName, int iLen); static struct char_data *find_npc_by_name(struct char_data *chAtChar, const char *pszName, int iLen);
static int block_way(char_data *ch, int cmd, char *arg, room_vnum iIn_room, int iProhibited_direction); static int block_way(struct char_data *ch, int cmd, char *arg, room_vnum iIn_room, int iProhibited_direction);
static int member_of_staff(const char_data *chChar); static int member_of_staff(struct char_data *chChar);
static int member_of_royal_guard(const char_data *chChar); static int member_of_royal_guard(struct char_data *chChar);
static char_data *find_guard(const char_data *chAtChar); static struct char_data *find_guard(struct char_data *chAtChar);
static char_data *get_victim(const char_data *chAtChar); static struct char_data *get_victim(struct char_data *chAtChar);
static int banzaii(char_data *ch); static int banzaii(struct char_data *ch);
static int do_npc_rescue(char_data *ch_hero, char_data *ch_victim); static int do_npc_rescue(struct char_data *ch_hero, struct char_data *ch_victim);
static int is_trash(const obj_data *i); static int is_trash(struct obj_data *i);
static void fry_victim(char_data *ch); static void fry_victim(struct char_data *ch);
static int castle_cleaner(char_data *ch, int cmd, int gripe); static int castle_cleaner(struct char_data *ch, int cmd, int gripe);
static int castle_twin_proc(char_data *ch, int cmd, char *arg, int ctlnum, const char *twinname); static int castle_twin_proc(struct char_data *ch, int cmd, char *arg, int ctlnum, const char *twinname);
static void castle_mob_spec(mob_vnum mobnum, SPECIAL(*specproc)); static void castle_mob_spec(mob_vnum mobnum, SPECIAL(*specproc));
/* Special procedures for Kings Castle by Pjotr. Coded by Sapowox. */ /* Special procedures for Kings Castle by Pjotr. Coded by Sapowox. */
SPECIAL(CastleGuard); SPECIAL(CastleGuard);
@@ -128,86 +129,86 @@ void assign_kings_castle(void)
/* Routine: member_of_staff. Used to see if a character is a member of the /* Routine: member_of_staff. Used to see if a character is a member of the
* castle staff. Used mainly by BANZAI:ng NPC:s. */ * castle staff. Used mainly by BANZAI:ng NPC:s. */
static int member_of_staff(const char_data *chChar) static int member_of_staff(struct char_data *chChar)
{ {
int ch_num; int ch_num;
if (!IS_NPC(chChar)) if (!IS_NPC(chChar))
return FALSE; return (FALSE);
ch_num = GET_MOB_VNUM(chChar); ch_num = GET_MOB_VNUM(chChar);
if (ch_num == castle_virtual(1)) if (ch_num == castle_virtual(1))
return TRUE; return (TRUE);
if (ch_num > castle_virtual(2) && ch_num < castle_virtual(15)) if (ch_num > castle_virtual(2) && ch_num < castle_virtual(15))
return TRUE; return (TRUE);
if (ch_num > castle_virtual(15) && ch_num < castle_virtual(18)) if (ch_num > castle_virtual(15) && ch_num < castle_virtual(18))
return TRUE; return (TRUE);
if (ch_num > castle_virtual(18) && ch_num < castle_virtual(30)) if (ch_num > castle_virtual(18) && ch_num < castle_virtual(30))
return TRUE; return (TRUE);
return FALSE; return (FALSE);
} }
/* Function: member_of_royal_guard. Returns TRUE if the character is a guard on /* Function: member_of_royal_guard. Returns TRUE if the character is a guard on
* duty, otherwise FALSE. Used by Peter the captain of the royal guard. */ * duty, otherwise FALSE. Used by Peter the captain of the royal guard. */
static int member_of_royal_guard(const char_data *chChar) static int member_of_royal_guard(struct char_data *chChar)
{ {
int ch_num; int ch_num;
if (!chChar || !IS_NPC(chChar)) if (!chChar || !IS_NPC(chChar))
return FALSE; return (FALSE);
ch_num = GET_MOB_VNUM(chChar); ch_num = GET_MOB_VNUM(chChar);
if (ch_num == castle_virtual(3) || ch_num == castle_virtual(6)) if (ch_num == castle_virtual(3) || ch_num == castle_virtual(6))
return TRUE; return (TRUE);
if (ch_num > castle_virtual(7) && ch_num < castle_virtual(12)) if (ch_num > castle_virtual(7) && ch_num < castle_virtual(12))
return TRUE; return (TRUE);
if (ch_num > castle_virtual(23) && ch_num < castle_virtual(26)) if (ch_num > castle_virtual(23) && ch_num < castle_virtual(26))
return TRUE; return (TRUE);
return FALSE; return (FALSE);
} }
/* Function: find_npc_by_name. Returns a pointer to an npc by the given name. /* Function: find_npc_by_name. Returns a pointer to an npc by the given name.
* Used by Tim and Tom. */ * Used by Tim and Tom. */
static char_data *find_npc_by_name(const char_data *chAtChar, static struct char_data *find_npc_by_name(struct char_data *chAtChar,
const char *pszName, int iLen) const char *pszName, int iLen)
{ {
char_data *ch; struct char_data *ch;
for (ch = world[IN_ROOM(chAtChar)].people; ch; ch = ch->next_in_room) for (ch = world[IN_ROOM(chAtChar)].people; ch; ch = ch->next_in_room)
if (IS_NPC(ch) && !strncmp(pszName, ch->player.short_descr, iLen)) if (IS_NPC(ch) && !strncmp(pszName, ch->player.short_descr, iLen))
return ch; return (ch);
return NULL; return (NULL);
} }
/* Function: find_guard. Returns the pointer to a guard on duty. Used by Peter /* Function: find_guard. Returns the pointer to a guard on duty. Used by Peter
* the Captain of the Royal Guard */ * the Captain of the Royal Guard */
static char_data *find_guard(const char_data *chAtChar) static struct char_data *find_guard(struct char_data *chAtChar)
{ {
char_data *ch; struct char_data *ch;
for (ch = world[IN_ROOM(chAtChar)].people; ch; ch = ch->next_in_room) for (ch = world[IN_ROOM(chAtChar)].people; ch; ch = ch->next_in_room)
if (!FIGHTING(ch) && member_of_royal_guard(ch)) if (!FIGHTING(ch) && member_of_royal_guard(ch))
return ch; return (ch);
return NULL; return (NULL);
} }
/* Function: get_victim. Returns a pointer to a randomly chosen character in /* Function: get_victim. Returns a pointer to a randomly chosen character in
* the same room, fighting someone in the castle staff. Used by BANZAII-ing * the same room, fighting someone in the castle staff. Used by BANZAII-ing
* characters and King Welmar... */ * characters and King Welmar... */
static char_data *get_victim(const char_data *chAtChar) static struct char_data *get_victim(struct char_data *chAtChar)
{ {
char_data *ch; struct char_data *ch;
int iNum_bad_guys = 0, iVictim; int iNum_bad_guys = 0, iVictim;
for (ch = world[IN_ROOM(chAtChar)].people; ch; ch = ch->next_in_room) for (ch = world[IN_ROOM(chAtChar)].people; ch; ch = ch->next_in_room)
@@ -215,11 +216,11 @@ static char_data *get_victim(const char_data *chAtChar)
iNum_bad_guys++; iNum_bad_guys++;
if (!iNum_bad_guys) if (!iNum_bad_guys)
return NULL; return (NULL);
iVictim = rand_number(0, iNum_bad_guys); /* How nice, we give them a chance */ iVictim = rand_number(0, iNum_bad_guys); /* How nice, we give them a chance */
if (!iVictim) if (!iVictim)
return NULL; return (NULL);
iNum_bad_guys = 0; iNum_bad_guys = 0;
@@ -233,40 +234,39 @@ static char_data *get_victim(const char_data *chAtChar)
if (++iNum_bad_guys != iVictim) if (++iNum_bad_guys != iVictim)
continue; continue;
return ch; return (ch);
} }
return NULL; return (NULL);
} }
/* Banzaii. Makes a character banzaii on attackers of the castle staff. Used /* Banzaii. Makes a character banzaii on attackers of the castle staff. Used
* by Guards, Tim, Tom, Dick, David, Peter, Master, and the King. */ * by Guards, Tim, Tom, Dick, David, Peter, Master, and the King. */
static int banzaii(char_data *ch) static int banzaii(struct char_data *ch)
{ {
char_data *chOpponent; struct char_data *chOpponent;
if (!AWAKE(ch) || GET_POS(ch) == POS_FIGHTING || (chOpponent = get_victim(ch)) == NULL) if (!AWAKE(ch) || GET_POS(ch) == POS_FIGHTING || !(chOpponent = get_victim(ch)))
return FALSE; return (FALSE);
act("$n roars: 'Protect the Kingdom of Great King Welmar! BANZAIIII!!!'", act("$n roars: 'Protect the Kingdom of Great King Welmar! BANZAIIII!!!'",
FALSE, ch, 0, 0, TO_ROOM); FALSE, ch, 0, 0, TO_ROOM);
hit(ch, chOpponent, TYPE_UNDEFINED); hit(ch, chOpponent, TYPE_UNDEFINED);
return TRUE; return (TRUE);
} }
/* Do_npc_rescue. Makes ch_hero rescue ch_victim. Used by Tim and Tom. */ /* Do_npc_rescue. Makes ch_hero rescue ch_victim. Used by Tim and Tom. */
static int do_npc_rescue(char_data *ch_hero, char_data *ch_victim) static int do_npc_rescue(struct char_data *ch_hero, struct char_data *ch_victim)
{ {
char_data *ch_bad_guy; struct char_data *ch_bad_guy;
for (ch_bad_guy = world[IN_ROOM(ch_hero)].people; for (ch_bad_guy = world[IN_ROOM(ch_hero)].people;
ch_bad_guy && FIGHTING(ch_bad_guy) != ch_victim; ch_bad_guy && (FIGHTING(ch_bad_guy) != ch_victim);
ch_bad_guy = ch_bad_guy->next_in_room) ch_bad_guy = ch_bad_guy->next_in_room);
;
/* NO WAY I'll rescue the one I'm fighting! */ /* NO WAY I'll rescue the one I'm fighting! */
if (!ch_bad_guy || ch_bad_guy == ch_hero) if (!ch_bad_guy || ch_bad_guy == ch_hero)
return FALSE; return (FALSE);
act("You bravely rescue $N.\r\n", FALSE, ch_hero, 0, ch_victim, TO_CHAR); act("You bravely rescue $N.\r\n", FALSE, ch_hero, 0, ch_victim, TO_CHAR);
act("You are rescued by $N, your loyal friend!\r\n", act("You are rescued by $N, your loyal friend!\r\n",
@@ -280,54 +280,54 @@ static int do_npc_rescue(char_data *ch_hero, char_data *ch_victim)
set_fighting(ch_hero, ch_bad_guy); set_fighting(ch_hero, ch_bad_guy);
set_fighting(ch_bad_guy, ch_hero); set_fighting(ch_bad_guy, ch_hero);
return TRUE; return (TRUE);
} }
/* Procedure to block a person trying to enter a room. Used by Tim/Tom at Kings /* Procedure to block a person trying to enter a room. Used by Tim/Tom at Kings
* bedroom and Dick/David at treasury. */ * bedroom and Dick/David at treasury. */
static int block_way(char_data *ch, int cmd, char *arg, room_vnum iIn_room, static int block_way(struct char_data *ch, int cmd, char *arg, room_vnum iIn_room,
int iProhibited_direction) int iProhibited_direction)
{ {
if (cmd != ++iProhibited_direction) if (cmd != ++iProhibited_direction)
return FALSE; return (FALSE);
if (ch->player.short_descr && !strncmp(ch->player.short_descr, "King Welmar", 11)) if (ch->player.short_descr && !strncmp(ch->player.short_descr, "King Welmar", 11))
return FALSE; return (FALSE);
if (IN_ROOM(ch) != real_room(iIn_room)) if (IN_ROOM(ch) != real_room(iIn_room))
return FALSE; return (FALSE);
if (!member_of_staff(ch)) if (!member_of_staff(ch))
act("The guard roars at $n and pushes $m back.", FALSE, ch, 0, 0, TO_ROOM); act("The guard roars at $n and pushes $m back.", FALSE, ch, 0, 0, TO_ROOM);
send_to_char(ch, "The guard roars: 'Entrance is Prohibited!', and pushes you back.\r\n"); send_to_char(ch, "The guard roars: 'Entrance is Prohibited!', and pushes you back.\r\n");
return TRUE; return (TRUE);
} }
/* Routine to check if an object is trash. Used by James the Butler and the /* Routine to check if an object is trash. Used by James the Butler and the
* Cleaning Lady. */ * Cleaning Lady. */
static int is_trash(const obj_data *i) static int is_trash(struct obj_data *i)
{ {
if (!OBJWEAR_FLAGGED(i, ITEM_WEAR_TAKE)) if (!OBJWEAR_FLAGGED(i, ITEM_WEAR_TAKE))
return FALSE; return (FALSE);
if (GET_OBJ_TYPE(i) == ITEM_DRINKCON || GET_OBJ_COST(i) <= 10) if (GET_OBJ_TYPE(i) == ITEM_DRINKCON || GET_OBJ_COST(i) <= 10)
return TRUE; return (TRUE);
return FALSE; return (FALSE);
} }
/* Fry_victim. Finds a suitabe victim, and cast some _NASTY_ spell on him. Used /* Fry_victim. Finds a suitabe victim, and cast some _NASTY_ spell on him. Used
* by King Welmar. */ * by King Welmar. */
static void fry_victim(char_data *ch) static void fry_victim(struct char_data *ch)
{ {
char_data *tch; struct char_data *tch;
if (ch->points.mana < 10) if (ch->points.mana < 10)
return; return;
/* Find someone suitable to fry ! */ /* Find someone suitable to fry ! */
if ((tch = get_victim(ch)) == NULL) if (!(tch = get_victim(ch)))
return; return;
switch (rand_number(0, 8)) { switch (rand_number(0, 8)) {
@@ -358,6 +358,8 @@ static void fry_victim(char_data *ch)
} }
ch->points.mana -= 10; ch->points.mana -= 10;
return;
} }
/* King_welmar. Control the actions and movements of the King. */ /* King_welmar. Control the actions and movements of the King. */
@@ -395,19 +397,18 @@ SPECIAL(king_welmar)
path_index = 0; path_index = 0;
} }
} }
if (cmd || GET_POS(ch) < POS_SLEEPING || if (cmd || (GET_POS(ch) < POS_SLEEPING) ||
(GET_POS(ch) == POS_SLEEPING && !move)) (GET_POS(ch) == POS_SLEEPING && !move))
return FALSE; return (FALSE);
if (GET_POS(ch) == POS_FIGHTING) { if (GET_POS(ch) == POS_FIGHTING) {
fry_victim(ch); fry_victim(ch);
return FALSE; return (FALSE);
} } else if (banzaii(ch))
if (banzaii(ch)) return (FALSE);
return FALSE;
if (!move) if (!move)
return FALSE; return (FALSE);
switch (path[path_index]) { switch (path[path_index]) {
case '0': case '0':
@@ -470,14 +471,10 @@ SPECIAL(king_welmar)
case '.': case '.':
move = FALSE; move = FALSE;
break; break;
default:
log("default case hit in king_welmar spec proc. path_index=%d path[path_index] = %c",
path_index, path[path_index]);
break;
} }
path_index++; path_index++;
return FALSE; return (FALSE);
} }
/* Training_master. Acts actions to the training room, if his students are /* Training_master. Acts actions to the training room, if his students are
@@ -485,25 +482,25 @@ SPECIAL(king_welmar)
* Master. */ * Master. */
SPECIAL(training_master) SPECIAL(training_master)
{ {
char_data *pupil1, *pupil2 = NULL, *tch; struct char_data *pupil1, *pupil2 = NULL, *tch;
if (!AWAKE(ch) || GET_POS(ch) == POS_FIGHTING) if (!AWAKE(ch) || (GET_POS(ch) == POS_FIGHTING))
return FALSE; return (FALSE);
if (cmd) if (cmd)
return FALSE; return (FALSE);
if (banzaii(ch) || rand_number(0, 2)) if (banzaii(ch) || rand_number(0, 2))
return FALSE; return (FALSE);
if ((pupil1 = find_npc_by_name(ch, "Brian", 5)) == NULL) if (!(pupil1 = find_npc_by_name(ch, "Brian", 5)))
return FALSE; return (FALSE);
if ((pupil2 = find_npc_by_name(ch, "Mick", 4)) == NULL) if (!(pupil2 = find_npc_by_name(ch, "Mick", 4)))
return FALSE; return (FALSE);
if (FIGHTING(pupil1) || FIGHTING(pupil2)) if (FIGHTING(pupil1) || FIGHTING(pupil2))
return FALSE; return (FALSE);
if (rand_number(0, 1)) { if (rand_number(0, 1)) {
tch = pupil1; tch = pupil1;
@@ -565,7 +562,7 @@ SPECIAL(training_master)
break; break;
} }
return FALSE; return (FALSE);
} }
SPECIAL(tom) SPECIAL(tom)
@@ -579,12 +576,12 @@ SPECIAL(tim)
} }
/* Common routine for the Castle Twins. */ /* Common routine for the Castle Twins. */
static int castle_twin_proc(char_data *ch, int cmd, char *arg, int ctlnum, const char *twinname) static int castle_twin_proc(struct char_data *ch, int cmd, char *arg, int ctlnum, const char *twinname)
{ {
char_data *king, *twin; struct char_data *king, *twin;
if (!AWAKE(ch)) if (!AWAKE(ch))
return FALSE; return (FALSE);
if (cmd) if (cmd)
return block_way(ch, cmd, arg, castle_virtual(ctlnum), 1); return block_way(ch, cmd, arg, castle_virtual(ctlnum), 1);
@@ -598,14 +595,14 @@ static int castle_twin_proc(char_data *ch, int cmd, char *arg, int ctlnum, const
do_npc_rescue(ch, king); do_npc_rescue(ch, king);
} }
if ((twin = find_npc_by_name(ch, twinname, (int)strlen(twinname))) != NULL) if ((twin = find_npc_by_name(ch, twinname, strlen(twinname))) != NULL)
if (FIGHTING(twin) && 2 * GET_HIT(twin) < GET_HIT(ch)) if (FIGHTING(twin) && 2 * GET_HIT(twin) < GET_HIT(ch))
do_npc_rescue(ch, twin); do_npc_rescue(ch, twin);
if (GET_POS(ch) != POS_FIGHTING) if (GET_POS(ch) != POS_FIGHTING)
banzaii(ch); banzaii(ch);
return FALSE; return (FALSE);
} }
@@ -617,12 +614,12 @@ SPECIAL(James)
} }
/* Common code for James and the Cleaning Woman. */ /* Common code for James and the Cleaning Woman. */
static int castle_cleaner(char_data *ch, int cmd, int gripe) static int castle_cleaner(struct char_data *ch, int cmd, int gripe)
{ {
obj_data *i; struct obj_data *i;
if (cmd || !AWAKE(ch) || GET_POS(ch) == POS_FIGHTING) if (cmd || !AWAKE(ch) || GET_POS(ch) == POS_FIGHTING)
return FALSE; return (FALSE);
for (i = world[IN_ROOM(ch)].contents; i; i = i->next_content) { for (i = world[IN_ROOM(ch)].contents; i; i = i->next_content) {
if (!is_trash(i)) if (!is_trash(i))
@@ -635,10 +632,10 @@ static int castle_cleaner(char_data *ch, int cmd, int gripe)
} }
obj_from_room(i); obj_from_room(i);
obj_to_char(i, ch); obj_to_char(i, ch);
return TRUE; return (TRUE);
} }
return FALSE; return (FALSE);
} }
/* Routine for the Cleaning Woman. Picks up any trash she finds. */ /* Routine for the Cleaning Woman. Picks up any trash she finds. */
@@ -650,36 +647,36 @@ SPECIAL(cleaning)
/* CastleGuard. Standard routine for ordinary castle guards. */ /* CastleGuard. Standard routine for ordinary castle guards. */
SPECIAL(CastleGuard) SPECIAL(CastleGuard)
{ {
if (cmd || !AWAKE(ch) || GET_POS(ch) == POS_FIGHTING) if (cmd || !AWAKE(ch) || (GET_POS(ch) == POS_FIGHTING))
return FALSE; return (FALSE);
return banzaii(ch); return (banzaii(ch));
} }
/* DicknDave. Routine for the guards Dick and David. */ /* DicknDave. Routine for the guards Dick and David. */
SPECIAL(DicknDavid) SPECIAL(DicknDavid)
{ {
if (!AWAKE(ch)) if (!AWAKE(ch))
return FALSE; return (FALSE);
if (!cmd && GET_POS(ch) != POS_FIGHTING) if (!cmd && GET_POS(ch) != POS_FIGHTING)
banzaii(ch); banzaii(ch);
return block_way(ch, cmd, argument, castle_virtual(36), 1); return (block_way(ch, cmd, argument, castle_virtual(36), 1));
} }
/*Peter. Routine for Captain of the Guards. */ /*Peter. Routine for Captain of the Guards. */
SPECIAL(peter) SPECIAL(peter)
{ {
char_data *ch_guard = NULL; struct char_data *ch_guard = NULL;
if (cmd || !AWAKE(ch) || GET_POS(ch) == POS_FIGHTING) if (cmd || !AWAKE(ch) || GET_POS(ch) == POS_FIGHTING)
return FALSE; return (FALSE);
if (banzaii(ch)) if (banzaii(ch))
return FALSE; return (FALSE);
if (!rand_number(0, 3) && (ch_guard = find_guard(ch)) != NULL) if (!(rand_number(0, 3)) && (ch_guard = find_guard(ch)))
switch (rand_number(0, 5)) { switch (rand_number(0, 5)) {
case 0: case 0:
act("$N comes sharply into attention as $n inspects $M.", act("$N comes sharply into attention as $n inspects $M.",
@@ -728,32 +725,32 @@ SPECIAL(peter)
break; break;
} }
return FALSE; return (FALSE);
} }
/* Procedure for Jerry and Michael in x08 of King's Castle. Code by Sapowox /* Procedure for Jerry and Michael in x08 of King's Castle. Code by Sapowox
* modified by Pjotr.(Original code from Master) */ * modified by Pjotr.(Original code from Master) */
SPECIAL(jerry) SPECIAL(jerry)
{ {
char_data *gambler1, *gambler2 = NULL, *tch; struct char_data *gambler1, *gambler2 = NULL, *tch;
if (!AWAKE(ch) || GET_POS(ch) == POS_FIGHTING) if (!AWAKE(ch) || (GET_POS(ch) == POS_FIGHTING))
return FALSE; return (FALSE);
if (cmd) if (cmd)
return FALSE; return (FALSE);
if (banzaii(ch) || rand_number(0, 2)) if (banzaii(ch) || rand_number(0, 2))
return FALSE; return (FALSE);
if ((gambler1 = ch) == NULL) if (!(gambler1 = ch))
return FALSE; return (FALSE);
if ((gambler2 = find_npc_by_name(ch, "Michael", 7)) == NULL) if (!(gambler2 = find_npc_by_name(ch, "Michael", 7)))
return FALSE; return (FALSE);
if (FIGHTING(gambler1) || FIGHTING(gambler2)) if (FIGHTING(gambler1) || FIGHTING(gambler2))
return FALSE; return (FALSE);
if (rand_number(0, 1)) { if (rand_number(0, 1)) {
tch = gambler1; tch = gambler1;
@@ -811,5 +808,5 @@ SPECIAL(jerry)
FALSE, gambler1, 0, gambler2, TO_VICT); FALSE, gambler1, 0, gambler2, TO_VICT);
break; break;
} }
return FALSE; return (FALSE);
} }

View File

@@ -19,20 +19,20 @@
#include "modify.h" #include "modify.h"
/* local scope functions, not used externally */ /* local scope functions, not used externally */
static void cedit_disp_menu(descriptor_data *d); static void cedit_disp_menu(struct descriptor_data *d);
static void cedit_save_internally(descriptor_data *d); static void cedit_save_internally(struct descriptor_data *d);
static void cedit_disp_game_play_options(descriptor_data *d); static void cedit_disp_game_play_options(struct descriptor_data *d);
static void cedit_disp_crash_save_options(descriptor_data *d); static void cedit_disp_crash_save_options(struct descriptor_data *d);
static void cedit_disp_room_numbers(descriptor_data *d); static void cedit_disp_room_numbers(struct descriptor_data *d);
static void cedit_disp_operation_options(descriptor_data *d); static void cedit_disp_operation_options(struct descriptor_data *d);
static void cedit_disp_autowiz_options(descriptor_data *d); static void cedit_disp_autowiz_options(struct descriptor_data *d);
static void reassign_rooms(void); static void reassign_rooms(void);
static void cedit_setup(descriptor_data *d); static void cedit_setup(struct descriptor_data *d);
ACMD(do_oasis_cedit) ACMD(do_oasis_cedit)
{ {
descriptor_data *d; struct descriptor_data *d;
char buf1[MAX_STRING_LENGTH]; char buf1[MAX_STRING_LENGTH];
/* No building as a mob or while being forced. */ /* No building as a mob or while being forced. */
@@ -72,7 +72,7 @@ ACMD(do_oasis_cedit)
cedit_save_to_disk(); cedit_save_to_disk();
} }
static void cedit_setup(descriptor_data *d) static void cedit_setup(struct descriptor_data *d)
{ {
/* Create the config_data struct. */ /* Create the config_data struct. */
CREATE(OLC_CONFIG(d), struct config_data, 1); CREATE(OLC_CONFIG(d), struct config_data, 1);
@@ -178,7 +178,7 @@ static void cedit_setup(descriptor_data *d)
cedit_disp_menu(d); cedit_disp_menu(d);
} }
static void cedit_save_internally(descriptor_data *d) static void cedit_save_internally(struct descriptor_data *d)
{ {
/* see if we need to reassign spec procs on rooms */ /* see if we need to reassign spec procs on rooms */
int reassign = (CONFIG_DTS_ARE_DUMPS != OLC_CONFIG(d)->play.dts_are_dumps); int reassign = (CONFIG_DTS_ARE_DUMPS != OLC_CONFIG(d)->play.dts_are_dumps);
@@ -578,7 +578,7 @@ int save_config( IDXTYPE nowhere )
} }
/* Menu functions - The main menu. */ /* Menu functions - The main menu. */
static void cedit_disp_menu(descriptor_data *d) static void cedit_disp_menu(struct descriptor_data *d)
{ {
get_char_colors(d->character); get_char_colors(d->character);
@@ -606,7 +606,7 @@ static void cedit_disp_menu(descriptor_data *d)
OLC_MODE(d) = CEDIT_MAIN_MENU; OLC_MODE(d) = CEDIT_MAIN_MENU;
} }
static void cedit_disp_game_play_options(descriptor_data *d) static void cedit_disp_game_play_options(struct descriptor_data *d)
{ {
int m_opt; int m_opt;
m_opt = OLC_CONFIG(d)->play.map_option; m_opt = OLC_CONFIG(d)->play.map_option;
@@ -679,7 +679,7 @@ static void cedit_disp_game_play_options(descriptor_data *d)
OLC_MODE(d) = CEDIT_GAME_OPTIONS_MENU; OLC_MODE(d) = CEDIT_GAME_OPTIONS_MENU;
} }
static void cedit_disp_crash_save_options(descriptor_data *d) static void cedit_disp_crash_save_options(struct descriptor_data *d)
{ {
get_char_colors(d->character); get_char_colors(d->character);
clear_screen(d); clear_screen(d);
@@ -707,7 +707,7 @@ static void cedit_disp_crash_save_options(descriptor_data *d)
OLC_MODE(d) = CEDIT_CRASHSAVE_OPTIONS_MENU; OLC_MODE(d) = CEDIT_CRASHSAVE_OPTIONS_MENU;
} }
static void cedit_disp_room_numbers(descriptor_data *d) static void cedit_disp_room_numbers(struct descriptor_data *d)
{ {
get_char_colors(d->character); get_char_colors(d->character);
clear_screen(d); clear_screen(d);
@@ -733,7 +733,7 @@ static void cedit_disp_room_numbers(descriptor_data *d)
OLC_MODE(d) = CEDIT_ROOM_NUMBERS_MENU; OLC_MODE(d) = CEDIT_ROOM_NUMBERS_MENU;
} }
static void cedit_disp_operation_options(descriptor_data *d) static void cedit_disp_operation_options(struct descriptor_data *d)
{ {
get_char_colors(d->character); get_char_colors(d->character);
clear_screen(d); clear_screen(d);
@@ -785,7 +785,7 @@ static void cedit_disp_operation_options(descriptor_data *d)
OLC_MODE(d) = CEDIT_OPERATION_OPTIONS_MENU; OLC_MODE(d) = CEDIT_OPERATION_OPTIONS_MENU;
} }
static void cedit_disp_autowiz_options(descriptor_data *d) static void cedit_disp_autowiz_options(struct descriptor_data *d)
{ {
get_char_colors(d->character); get_char_colors(d->character);
clear_screen(d); clear_screen(d);
@@ -804,7 +804,7 @@ static void cedit_disp_autowiz_options(descriptor_data *d)
} }
/* The event handler. */ /* The event handler. */
void cedit_parse(descriptor_data *d, char *arg) void cedit_parse(struct descriptor_data *d, char *arg)
{ {
char *oldtext = NULL; char *oldtext = NULL;
@@ -1520,12 +1520,12 @@ void cedit_parse(descriptor_data *d, char *arg)
write_to_output(d, write_to_output(d,
"That is an invalid choice!\r\n" "That is an invalid choice!\r\n"
"Enter the room's vnum where mortals should load into : "); "Enter the room's vnum where mortals should load into : ");
} else if (real_room(atoidx(arg)) == NOWHERE) { } else if (real_room(atoi(arg)) == NOWHERE) {
write_to_output(d, write_to_output(d,
"That room doesn't exist!\r\n" "That room doesn't exist!\r\n"
"Enter the room's vnum where mortals should load into : "); "Enter the room's vnum where mortals should load into : ");
} else { } else {
OLC_CONFIG(d)->room_nums.mortal_start_room = atoidx(arg); OLC_CONFIG(d)->room_nums.mortal_start_room = atoi(arg);
cedit_disp_room_numbers(d); cedit_disp_room_numbers(d);
} }
break; break;
@@ -1535,12 +1535,12 @@ void cedit_parse(descriptor_data *d, char *arg)
write_to_output(d, write_to_output(d,
"That is an invalid choice!\r\n" "That is an invalid choice!\r\n"
"Enter the room's vnum where immortals should load into : "); "Enter the room's vnum where immortals should load into : ");
} else if (real_room(atoidx(arg)) == NOWHERE) { } else if (real_room(atoi(arg)) == NOWHERE) {
write_to_output(d, write_to_output(d,
"That room doesn't exist!\r\n" "That room doesn't exist!\r\n"
"Enter the room's vnum where immortals should load into : "); "Enter the room's vnum where immortals should load into : ");
} else { } else {
OLC_CONFIG(d)->room_nums.immort_start_room = atoidx(arg); OLC_CONFIG(d)->room_nums.immort_start_room = atoi(arg);
cedit_disp_room_numbers(d); cedit_disp_room_numbers(d);
} }
break; break;
@@ -1550,12 +1550,12 @@ void cedit_parse(descriptor_data *d, char *arg)
write_to_output(d, write_to_output(d,
"That is an invalid choice!\r\n" "That is an invalid choice!\r\n"
"Enter the room's vnum where frozen people should load into : "); "Enter the room's vnum where frozen people should load into : ");
} else if (real_room(atoidx(arg)) == NOWHERE) { } else if (real_room(atoi(arg)) == NOWHERE) {
write_to_output(d, write_to_output(d,
"That room doesn't exist!\r\n" "That room doesn't exist!\r\n"
"Enter the room's vnum where frozen people should load into : "); "Enter the room's vnum where frozen people should load into : ");
} else { } else {
OLC_CONFIG(d)->room_nums.frozen_start_room = atoidx(arg); OLC_CONFIG(d)->room_nums.frozen_start_room = atoi(arg);
cedit_disp_room_numbers(d); cedit_disp_room_numbers(d);
} }
break; break;
@@ -1565,12 +1565,12 @@ void cedit_parse(descriptor_data *d, char *arg)
write_to_output(d, write_to_output(d,
"That is an invalid choice!\r\n" "That is an invalid choice!\r\n"
"Enter the vnum for donation room #1 : "); "Enter the vnum for donation room #1 : ");
} else if (real_room(atoidx(arg)) == NOWHERE) { } else if (real_room(atoi(arg)) == NOWHERE) {
write_to_output(d, write_to_output(d,
"That room doesn't exist!\r\n" "That room doesn't exist!\r\n"
"Enter the vnum for donation room #1 : "); "Enter the vnum for donation room #1 : ");
} else { } else {
OLC_CONFIG(d)->room_nums.donation_room_1 = atoidx(arg); OLC_CONFIG(d)->room_nums.donation_room_1 = atoi(arg);
cedit_disp_room_numbers(d); cedit_disp_room_numbers(d);
} }
break; break;
@@ -1580,12 +1580,12 @@ void cedit_parse(descriptor_data *d, char *arg)
write_to_output(d, write_to_output(d,
"That is an invalid choice!\r\n" "That is an invalid choice!\r\n"
"Enter the vnum for donation room #2 : "); "Enter the vnum for donation room #2 : ");
} else if (real_room(atoidx(arg)) == NOWHERE) { } else if (real_room(atoi(arg)) == NOWHERE) {
write_to_output(d, write_to_output(d,
"That room doesn't exist!\r\n" "That room doesn't exist!\r\n"
"Enter the vnum for donation room #2 : "); "Enter the vnum for donation room #2 : ");
} else { } else {
OLC_CONFIG(d)->room_nums.donation_room_2 = atoidx(arg); OLC_CONFIG(d)->room_nums.donation_room_2 = atoi(arg);
cedit_disp_room_numbers(d); cedit_disp_room_numbers(d);
} }
break; break;
@@ -1595,12 +1595,12 @@ void cedit_parse(descriptor_data *d, char *arg)
write_to_output(d, write_to_output(d,
"That is an invalid choice!\r\n" "That is an invalid choice!\r\n"
"Enter the vnum for donation room #3 : "); "Enter the vnum for donation room #3 : ");
} else if (real_room(atoidx(arg)) == NOWHERE) { } else if (real_room(atoi(arg)) == NOWHERE) {
write_to_output(d, write_to_output(d,
"That room doesn't exist!\r\n" "That room doesn't exist!\r\n"
"Enter the vnum for donation room #3 : "); "Enter the vnum for donation room #3 : ");
} else { } else {
OLC_CONFIG(d)->room_nums.donation_room_3 = atoidx(arg); OLC_CONFIG(d)->room_nums.donation_room_3 = atoi(arg);
cedit_disp_room_numbers(d); cedit_disp_room_numbers(d);
} }
break; break;
@@ -1729,7 +1729,7 @@ static void reassign_rooms(void)
assign_rooms(); assign_rooms();
} }
void cedit_string_cleanup(descriptor_data *d, int terminator) void cedit_string_cleanup(struct descriptor_data *d, int terminator)
{ {
switch (OLC_MODE(d)) { switch (OLC_MODE(d)) {
case CEDIT_MENU: case CEDIT_MENU:

View File

@@ -1343,7 +1343,7 @@ int thaco(int class_num, int level)
/* Roll the 6 stats for a character... each stat is made of the sum of the best /* Roll the 6 stats for a character... each stat is made of the sum of the best
* 3 out of 4 rolls of a 6-sided die. Each class then decides which priority * 3 out of 4 rolls of a 6-sided die. Each class then decides which priority
* will be given for the best to worst stats. */ * will be given for the best to worst stats. */
void roll_real_abils(char_data *ch) void roll_real_abils(struct char_data *ch)
{ {
int i, j, k, temp; int i, j, k, temp;
ubyte table[6]; ubyte table[6];
@@ -1410,7 +1410,7 @@ void roll_real_abils(char_data *ch)
} }
/* Some initializations for characters, including initial skills */ /* Some initializations for characters, including initial skills */
void do_start(char_data *ch) void do_start(struct char_data *ch)
{ {
GET_LEVEL(ch) = 1; GET_LEVEL(ch) = 1;
GET_EXP(ch) = 1; GET_EXP(ch) = 1;
@@ -1459,7 +1459,7 @@ void do_start(char_data *ch)
/* This function controls the change to maxmove, maxmana, and maxhp for each /* This function controls the change to maxmove, maxmana, and maxhp for each
* class every time they gain a level. */ * class every time they gain a level. */
void advance_level(char_data *ch) void advance_level(struct char_data *ch)
{ {
int add_hp, add_mana = 0, add_move = 0, i; int add_hp, add_mana = 0, add_move = 0, i;
@@ -1537,7 +1537,7 @@ int backstab_mult(int level)
/* invalid_class is used by handler.c to determine if a piece of equipment is /* invalid_class is used by handler.c to determine if a piece of equipment is
* usable by a particular class, based on the ITEM_ANTI_{class} bitvectors. */ * usable by a particular class, based on the ITEM_ANTI_{class} bitvectors. */
int invalid_class(char_data *ch, obj_data *obj) int invalid_class(struct char_data *ch, struct obj_data *obj)
{ {
if (OBJ_FLAGGED(obj, ITEM_ANTI_MAGIC_USER) && IS_MAGIC_USER(ch)) if (OBJ_FLAGGED(obj, ITEM_ANTI_MAGIC_USER) && IS_MAGIC_USER(ch))
return TRUE; return TRUE;

View File

@@ -15,12 +15,12 @@
/* Functions available through class.c */ /* Functions available through class.c */
int backstab_mult(int level); int backstab_mult(int level);
void do_start(char_data *ch); void do_start(struct char_data *ch);
bitvector_t find_class_bitvector(const char *arg); bitvector_t find_class_bitvector(const char *arg);
int invalid_class(char_data *ch, obj_data *obj); int invalid_class(struct char_data *ch, struct obj_data *obj);
int level_exp(int chclass, int level); int level_exp(int chclass, int level);
int parse_class(char arg); int parse_class(char arg);
void roll_real_abils(char_data *ch); void roll_real_abils(struct char_data *ch);
byte saving_throws(int class_num, int type, int level); byte saving_throws(int class_num, int type, int level);
int thaco(int class_num, int level); int thaco(int class_num, int level);
const char *title_female(int chclass, int level); const char *title_female(int chclass, int level);

View File

@@ -87,8 +87,11 @@
#define INVALID_SOCKET (-1) #define INVALID_SOCKET (-1)
#endif #endif
extern time_t motdmod;
extern time_t newsmod;
/* locally defined globals, used externally */ /* locally defined globals, used externally */
descriptor_data *descriptor_list = NULL; /* master desc list */ struct descriptor_data *descriptor_list = NULL; /* master desc list */
int buf_largecount = 0; /* # of large buffers which exist */ int buf_largecount = 0; /* # of large buffers which exist */
int buf_overflows = 0; /* # of overflows of output */ int buf_overflows = 0; /* # of overflows of output */
int buf_switches = 0; /* # of switches from small to large buf */ int buf_switches = 0; /* # of switches from small to large buf */
@@ -105,7 +108,7 @@ int next_tick = SECS_PER_MUD_HOUR; /* Tick countdown */
/* static local global variable declarations (current file scope only) */ /* static local global variable declarations (current file scope only) */
static struct txt_block *bufpool = 0; /* pool of large output buffers */ static struct txt_block *bufpool = 0; /* pool of large output buffers */
static unsigned long max_players = 0; /* max descriptors available */ static int max_players = 0; /* max descriptors available */
static int tics_passed = 0; /* for extern checkpointing */ static int tics_passed = 0; /* for extern checkpointing */
static struct timeval null_time; /* zero-valued time structure */ static struct timeval null_time; /* zero-valued time structure */
static byte reread_wizlist; /* signal: SIGUSR1 */ static byte reread_wizlist; /* signal: SIGUSR1 */
@@ -131,18 +134,18 @@ static void init_game(ush_int port);
static void signal_setup(void); static void signal_setup(void);
static socket_t init_socket(ush_int port); static socket_t init_socket(ush_int port);
static int new_descriptor(socket_t s); static int new_descriptor(socket_t s);
static unsigned long get_max_players(void); static int get_max_players(void);
static ssize_t process_output(descriptor_data *t); static int process_output(struct descriptor_data *t);
static int process_input(descriptor_data *t); static int process_input(struct descriptor_data *t);
static void timediff(struct timeval *rslt, const struct timeval *a, const struct timeval *b); static void timediff(struct timeval *diff, struct timeval *a, struct timeval *b);
static void timeadd(struct timeval *rslt, const struct timeval *a, const struct timeval *b); static void timeadd(struct timeval *sum, struct timeval *a, struct timeval *b);
static void flush_queues(descriptor_data *d); static void flush_queues(struct descriptor_data *d);
static void nonblock(socket_t s); static void nonblock(socket_t s);
static int perform_subst(descriptor_data *t, const char *orig, char *subst); static int perform_subst(struct descriptor_data *t, char *orig, char *subst);
static void record_usage(void); static void record_usage(void);
static char *make_prompt(const descriptor_data *d); static char *make_prompt(struct descriptor_data *point);
static void check_idle_passwords(void); static void check_idle_passwords(void);
static void init_descriptor (descriptor_data *newd, int desc); static void init_descriptor (struct descriptor_data *newd, int desc);
static struct in_addr *get_bind_addr(void); static struct in_addr *get_bind_addr(void);
static int parse_ip(const char *addr, struct in_addr *inaddr); static int parse_ip(const char *addr, struct in_addr *inaddr);
@@ -315,8 +318,7 @@ int main(int argc, char **argv)
if (!isdigit(*argv[pos])) { if (!isdigit(*argv[pos])) {
printf("Usage: %s [-c] [-m] [-q] [-r] [-s] [-d pathname] [port #]\n", argv[0]); printf("Usage: %s [-c] [-m] [-q] [-r] [-s] [-d pathname] [port #]\n", argv[0]);
exit(1); exit(1);
} } else if ((port = atoi(argv[pos])) <= 1024) {
if ((port = atoi(argv[pos])) <= 1024) {
printf("SYSERR: Illegal port number %d.\n", port); printf("SYSERR: Illegal port number %d.\n", port);
exit(1); exit(1);
} }
@@ -378,13 +380,13 @@ int main(int argc, char **argv)
zmalloc_check(); zmalloc_check();
#endif #endif
return 0; return (0);
} }
/* Reload players after a copyover */ /* Reload players after a copyover */
void copyover_recover() void copyover_recover()
{ {
descriptor_data *d; struct descriptor_data *d;
FILE *fp; FILE *fp;
char host[1024], guiopt[1024]; char host[1024], guiopt[1024];
int desc, i, player_i; int desc, i, player_i;
@@ -446,7 +448,7 @@ void copyover_recover()
CopyoverSet(d,guiopt); CopyoverSet(d,guiopt);
/* Now, find the pfile */ /* Now, find the pfile */
CREATE(d->character, char_data, 1); CREATE(d->character, struct char_data, 1);
clear_char(d->character); clear_char(d->character);
CREATE(d->character->player_specials, struct player_special_data, 1); CREATE(d->character->player_specials, struct player_special_data, 1);
@@ -642,13 +644,13 @@ static socket_t init_socket(ush_int local_port)
return (s); return (s);
} }
static unsigned long get_max_players(void) static int get_max_players(void)
{ {
#ifndef CIRCLE_UNIX #ifndef CIRCLE_UNIX
return (CONFIG_MAX_PLAYING); return (CONFIG_MAX_PLAYING);
#else #else
unsigned long max_descs = 0; int max_descs = 0;
const char *method; const char *method;
/* First, we'll try using getrlimit/setrlimit. This will probably work /* First, we'll try using getrlimit/setrlimit. This will probably work
@@ -681,7 +683,7 @@ static unsigned long get_max_players(void)
if (limit.rlim_max == RLIM_INFINITY) if (limit.rlim_max == RLIM_INFINITY)
max_descs = CONFIG_MAX_PLAYING + NUM_RESERVED_DESCS; max_descs = CONFIG_MAX_PLAYING + NUM_RESERVED_DESCS;
else else
max_descs = ULMIN(CONFIG_MAX_PLAYING + NUM_RESERVED_DESCS, limit.rlim_max); max_descs = MIN(CONFIG_MAX_PLAYING + NUM_RESERVED_DESCS, limit.rlim_max);
#else #else
max_descs = MIN(CONFIG_MAX_PLAYING + NUM_RESERVED_DESCS, limit.rlim_max); max_descs = MIN(CONFIG_MAX_PLAYING + NUM_RESERVED_DESCS, limit.rlim_max);
#endif #endif
@@ -715,15 +717,15 @@ static unsigned long get_max_players(void)
#endif #endif
/* now calculate max _players_ based on max descs */ /* now calculate max _players_ based on max descs */
max_descs = ULMIN(CONFIG_MAX_PLAYING, max_descs - NUM_RESERVED_DESCS); max_descs = MIN(CONFIG_MAX_PLAYING, max_descs - NUM_RESERVED_DESCS);
if (max_descs <= 0) { if (max_descs <= 0) {
log("SYSERR: Non-positive max player limit! (Set at %ld using %s).", log("SYSERR: Non-positive max player limit! (Set at %d using %s).",
max_descs, method); max_descs, method);
exit(1); exit(1);
} }
log(" Setting player limit to %ld using %s.", max_descs, method); log(" Setting player limit to %d using %s.", max_descs, method);
return max_descs; return (max_descs);
#endif /* CIRCLE_UNIX */ #endif /* CIRCLE_UNIX */
} }
@@ -738,9 +740,8 @@ void game_loop(socket_t local_mother_desc)
struct timeval last_time, opt_time, process_time, temp_time; struct timeval last_time, opt_time, process_time, temp_time;
struct timeval before_sleep, now, timeout; struct timeval before_sleep, now, timeout;
char comm[MAX_INPUT_LENGTH]; char comm[MAX_INPUT_LENGTH];
descriptor_data *d, *next_d; struct descriptor_data *d, *next_d;
int maxdesc, aliased; int missed_pulses, maxdesc, aliased;
long missed_pulses;
/* initialize various time values */ /* initialize various time values */
null_time.tv_sec = 0; null_time.tv_sec = 0;
@@ -766,8 +767,7 @@ void game_loop(socket_t local_mother_desc)
perror("SYSERR: Select coma"); perror("SYSERR: Select coma");
} else } else
log("New connection. Waking up."); log("New connection. Waking up.");
gettimeofday(&last_time, (struct timezone *) 0);
gettimeofday(&last_time, 0);
} }
/* Set up the input, output, and exception sets for select(). */ /* Set up the input, output, and exception sets for select(). */
FD_ZERO(&input_set); FD_ZERO(&input_set);
@@ -791,7 +791,7 @@ void game_loop(socket_t local_mother_desc)
* to sleep until the next 0.1 second tick. The first step is to * to sleep until the next 0.1 second tick. The first step is to
* calculate how long we took processing the previous iteration. */ * calculate how long we took processing the previous iteration. */
gettimeofday(&before_sleep, 0); /* current time */ gettimeofday(&before_sleep, (struct timezone *) 0); /* current time */
timediff(&process_time, &before_sleep, &last_time); timediff(&process_time, &before_sleep, &last_time);
/* If we were asleep for more than one pass, count missed pulses and sleep /* If we were asleep for more than one pass, count missed pulses and sleep
@@ -810,13 +810,13 @@ void game_loop(socket_t local_mother_desc)
timeadd(&last_time, &before_sleep, &temp_time); timeadd(&last_time, &before_sleep, &temp_time);
/* Now keep sleeping until that time has come */ /* Now keep sleeping until that time has come */
gettimeofday(&now, 0); gettimeofday(&now, (struct timezone *) 0);
timediff(&timeout, &last_time, &now); timediff(&timeout, &last_time, &now);
/* Go to sleep */ /* Go to sleep */
do { do {
circle_sleep(&timeout); circle_sleep(&timeout);
gettimeofday(&now, 0); gettimeofday(&now, (struct timezone *) 0);
timediff(&timeout, &last_time, &now); timediff(&timeout, &last_time, &now);
} while (timeout.tv_usec || timeout.tv_sec); } while (timeout.tv_usec || timeout.tv_sec);
@@ -931,13 +931,13 @@ void game_loop(socket_t local_mother_desc)
missed_pulses++; missed_pulses++;
if (missed_pulses <= 0) { if (missed_pulses <= 0) {
log("SYSERR: **BAD** MISSED_PULSES NONPOSITIVE (%ld), TIME GOING BACKWARDS!!", missed_pulses); log("SYSERR: **BAD** MISSED_PULSES NONPOSITIVE (%d), TIME GOING BACKWARDS!!", missed_pulses);
missed_pulses = 1; missed_pulses = 1;
} }
/* If we missed more than 30 seconds worth of pulses, just do 30 secs */ /* If we missed more than 30 seconds worth of pulses, just do 30 secs */
if (missed_pulses > 30 RL_SEC) { if (missed_pulses > 30 RL_SEC) {
log("SYSERR: Missed %ld seconds worth of pulses.", missed_pulses / PASSES_PER_SEC); log("SYSERR: Missed %d seconds worth of pulses.", missed_pulses / PASSES_PER_SEC);
missed_pulses = 30 RL_SEC; missed_pulses = 30 RL_SEC;
} }
@@ -968,7 +968,7 @@ void game_loop(socket_t local_mother_desc)
} }
} }
void heartbeat(const unsigned long heart_pulse) void heartbeat(int heart_pulse)
{ {
static int mins_since_crashsave = 0; static int mins_since_crashsave = 0;
@@ -1026,7 +1026,7 @@ void heartbeat(const unsigned long heart_pulse)
* Based on code submitted by ss@sirocco.cup.hp.com. Code to return the time * Based on code submitted by ss@sirocco.cup.hp.com. Code to return the time
* difference between a and b (a-b). Always returns a nonnegative value * difference between a and b (a-b). Always returns a nonnegative value
* (floors at 0). */ * (floors at 0). */
static void timediff(struct timeval *rslt, const struct timeval *a, const struct timeval *b) static void timediff(struct timeval *rslt, struct timeval *a, struct timeval *b)
{ {
if (a->tv_sec < b->tv_sec) if (a->tv_sec < b->tv_sec)
*rslt = null_time; *rslt = null_time;
@@ -1048,7 +1048,7 @@ static void timediff(struct timeval *rslt, const struct timeval *a, const struct
} }
/* Add 2 time values. Patch sent by "d. hall" to fix 'static' usage. */ /* Add 2 time values. Patch sent by "d. hall" to fix 'static' usage. */
static void timeadd(struct timeval *rslt, const struct timeval *a, const struct timeval *b) static void timeadd(struct timeval *rslt, struct timeval *a, struct timeval *b)
{ {
rslt->tv_sec = a->tv_sec + b->tv_sec; rslt->tv_sec = a->tv_sec + b->tv_sec;
rslt->tv_usec = a->tv_usec + b->tv_usec; rslt->tv_usec = a->tv_usec + b->tv_usec;
@@ -1062,7 +1062,7 @@ static void timeadd(struct timeval *rslt, const struct timeval *a, const struct
static void record_usage(void) static void record_usage(void)
{ {
int sockets_connected = 0, sockets_playing = 0; int sockets_connected = 0, sockets_playing = 0;
descriptor_data *d; struct descriptor_data *d;
for (d = descriptor_list; d; d = d->next) { for (d = descriptor_list; d; d = d->next) {
sockets_connected++; sockets_connected++;
@@ -1085,7 +1085,7 @@ static void record_usage(void)
} }
/* Turn off echoing (specific to telnet client) */ /* Turn off echoing (specific to telnet client) */
void echo_off(descriptor_data *d) void echo_off(struct descriptor_data *d)
{ {
char off_string[] = char off_string[] =
{ {
@@ -1099,7 +1099,7 @@ void echo_off(descriptor_data *d)
} }
/* Turn on echoing (specific to telnet client) */ /* Turn on echoing (specific to telnet client) */
void echo_on(descriptor_data *d) void echo_on(struct descriptor_data *d)
{ {
char on_string[] = char on_string[] =
{ {
@@ -1112,7 +1112,7 @@ void echo_on(descriptor_data *d)
write_to_output(d, "%s", on_string); write_to_output(d, "%s", on_string);
} }
static char *make_prompt(const descriptor_data *d) static char *make_prompt(struct descriptor_data *d)
{ {
static char prompt[MAX_PROMPT_LENGTH]; static char prompt[MAX_PROMPT_LENGTH];
@@ -1137,7 +1137,7 @@ static char *make_prompt(const descriptor_data *d)
} }
/* show only when below 25% */ /* show only when below 25% */
if (PRF_FLAGGED(d->character, PRF_DISPAUTO) && len < sizeof(prompt)) { if (PRF_FLAGGED(d->character, PRF_DISPAUTO) && len < sizeof(prompt)) {
const char_data *ch = d->character; struct char_data *ch = d->character;
if (GET_HIT(ch) << 2 < GET_MAX_HIT(ch) ) { if (GET_HIT(ch) << 2 < GET_MAX_HIT(ch) ) {
count = snprintf(prompt + len, sizeof(prompt) - len, "%dH ", GET_HIT(ch)); count = snprintf(prompt + len, sizeof(prompt) - len, "%dH ", GET_HIT(ch));
if (count >= 0) if (count >= 0)
@@ -1206,11 +1206,11 @@ static char *make_prompt(const descriptor_data *d)
else else
*prompt = '\0'; *prompt = '\0';
return prompt; return (prompt);
} }
/* NOTE: 'txt' must be at most MAX_INPUT_LENGTH big. */ /* NOTE: 'txt' must be at most MAX_INPUT_LENGTH big. */
void write_to_q(const char *txt, struct txt_q *queue, const int aliased) void write_to_q(const char *txt, struct txt_q *queue, int aliased)
{ {
struct txt_block *newt; struct txt_block *newt;
@@ -1250,7 +1250,7 @@ static int get_from_q(struct txt_q *queue, char *dest, int *aliased)
} }
/* Empty the queues before closing connection */ /* Empty the queues before closing connection */
static void flush_queues(descriptor_data *d) static void flush_queues(struct descriptor_data *d)
{ {
if (d->large_outbuf) { if (d->large_outbuf) {
d->large_outbuf->next = bufpool; d->large_outbuf->next = bufpool;
@@ -1265,7 +1265,7 @@ static void flush_queues(descriptor_data *d)
} }
/* Add a new string to a player's output queue. For outside use. */ /* Add a new string to a player's output queue. For outside use. */
size_t write_to_output(descriptor_data *t, const char *txt, ...) size_t write_to_output(struct descriptor_data *t, const char *txt, ...)
{ {
va_list args; va_list args;
size_t left; size_t left;
@@ -1278,23 +1278,23 @@ size_t write_to_output(descriptor_data *t, const char *txt, ...)
} }
/* Add a new string to a player's output queue. */ /* Add a new string to a player's output queue. */
size_t vwrite_to_output(descriptor_data *t, const char *format, va_list args) size_t vwrite_to_output(struct descriptor_data *t, const char *format, va_list args)
{ {
const char *text_overflow = "\r\nOVERFLOW\r\n"; const char *text_overflow = "\r\nOVERFLOW\r\n";
static char txt[MAX_STRING_LENGTH]; static char txt[MAX_STRING_LENGTH];
size_t wantsize; size_t wantsize;
size_t size; int size;
/* if we're in the overflow state already, ignore this new output */ /* if we're in the overflow state already, ignore this new output */
if (t->bufspace == 0) if (t->bufspace == 0)
return 0; return (0);
wantsize = size = vsnprintf(txt, sizeof(txt), format, args); wantsize = size = vsnprintf(txt, sizeof(txt), format, args);
strcpy(txt, ProtocolOutput( t, txt, &wantsize )); strcpy(txt, ProtocolOutput( t, txt, (int*)&wantsize )); /* <--- Add this line */
size = wantsize; size = wantsize; /* <--- Add this line */
if ( t->pProtocol->WriteOOB > 0 ) if ( t->pProtocol->WriteOOB > 0 ) /* <--- Add this line */
--t->pProtocol->WriteOOB; --t->pProtocol->WriteOOB; /* <--- Add this line */
/* If exceeding the size of the buffer, truncate it for the overflow message */ /* If exceeding the size of the buffer, truncate it for the overflow message */
if (size < 0 || wantsize >= sizeof(txt)) { if (size < 0 || wantsize >= sizeof(txt)) {
@@ -1315,9 +1315,9 @@ size_t vwrite_to_output(descriptor_data *t, const char *format, va_list args)
* text just barely fits, then it's switched to a large buffer instead. */ * text just barely fits, then it's switched to a large buffer instead. */
if (t->bufspace > size) { if (t->bufspace > size) {
strcpy(t->output + t->bufptr, txt); /* strcpy: OK (size checked above) */ strcpy(t->output + t->bufptr, txt); /* strcpy: OK (size checked above) */
t->bufspace -= (ssize_t)size; t->bufspace -= size;
t->bufptr += (ssize_t)size; t->bufptr += size;
return t->bufspace; return (t->bufspace);
} }
buf_switches++; buf_switches++;
@@ -1337,12 +1337,12 @@ size_t vwrite_to_output(descriptor_data *t, const char *format, va_list args)
strcat(t->output, txt); /* strcat: OK (size checked) */ strcat(t->output, txt); /* strcat: OK (size checked) */
/* set the pointer for the next write */ /* set the pointer for the next write */
t->bufptr = (ssize_t)strlen(t->output); // cast ok, strlen <<< SSIZE_MAX t->bufptr = strlen(t->output);
/* calculate how much space is left in the buffer */ /* calculate how much space is left in the buffer */
t->bufspace = LARGE_BUFSIZE - 1 - t->bufptr; t->bufspace = LARGE_BUFSIZE - 1 - t->bufptr;
return t->bufspace; return (t->bufspace);
} }
static void free_bufpool(void) static void free_bufpool(void)
@@ -1423,7 +1423,7 @@ int parse_ip(const char *addr, struct in_addr *inaddr)
"functions to parse IP addresses (how bizarre!)"); "functions to parse IP addresses (how bizarre!)");
return (0); return (0);
} }
#endif /* HAVE_INET_ATON HAVE_INET_ADDR */ #endif /* INET_ATON and INET_ADDR */
/* Sets the kernel's send buffer size for the descriptor */ /* Sets the kernel's send buffer size for the descriptor */
static int set_sendbuf(socket_t s) static int set_sendbuf(socket_t s)
@@ -1441,7 +1441,7 @@ static int set_sendbuf(socket_t s)
} }
/* Initialize a descriptor */ /* Initialize a descriptor */
static void init_descriptor (descriptor_data *newd, int desc) static void init_descriptor (struct descriptor_data *newd, int desc)
{ {
static int last_desc = 0; /* last descriptor number */ static int last_desc = 0; /* last descriptor number */
@@ -1467,9 +1467,9 @@ static int new_descriptor(socket_t s)
{ {
socket_t desc; socket_t desc;
int sockets_connected = 0; int sockets_connected = 0;
size_t greetsize; int greetsize;
socklen_t i; socklen_t i;
descriptor_data *newd; struct descriptor_data *newd;
struct sockaddr_in peer; struct sockaddr_in peer;
struct hostent *from; struct hostent *from;
@@ -1477,7 +1477,7 @@ static int new_descriptor(socket_t s)
i = sizeof(peer); i = sizeof(peer);
if ((desc = accept(s, (struct sockaddr *) &peer, &i)) == INVALID_SOCKET) { if ((desc = accept(s, (struct sockaddr *) &peer, &i)) == INVALID_SOCKET) {
perror("SYSERR: accept"); perror("SYSERR: accept");
return -1; return (-1);
} }
/* keep it from blocking */ /* keep it from blocking */
nonblock(desc); nonblock(desc);
@@ -1485,7 +1485,7 @@ static int new_descriptor(socket_t s)
/* set the send buffer size */ /* set the send buffer size */
if (set_sendbuf(desc) < 0) { if (set_sendbuf(desc) < 0) {
CLOSE_SOCKET(desc); CLOSE_SOCKET(desc);
return 0; return (0);
} }
/* make sure we have room for it */ /* make sure we have room for it */
@@ -1495,15 +1495,15 @@ static int new_descriptor(socket_t s)
if (sockets_connected >= CONFIG_MAX_PLAYING) { if (sockets_connected >= CONFIG_MAX_PLAYING) {
write_to_descriptor(desc, "Sorry, the game is full right now... please try again later!\r\n"); write_to_descriptor(desc, "Sorry, the game is full right now... please try again later!\r\n");
CLOSE_SOCKET(desc); CLOSE_SOCKET(desc);
return 0; return (0);
} }
/* create a new descriptor */ /* create a new descriptor */
CREATE(newd, struct descriptor_data, 1); CREATE(newd, struct descriptor_data, 1);
/* find the sitename */ /* find the sitename */
if (CONFIG_NS_IS_SLOW || if (CONFIG_NS_IS_SLOW ||
!((from = gethostbyaddr((char *) &peer.sin_addr, !(from = gethostbyaddr((char *) &peer.sin_addr,
sizeof(peer.sin_addr), AF_INET)))) { sizeof(peer.sin_addr), AF_INET))) {
/* resolution failed */ /* resolution failed */
if (!CONFIG_NS_IS_SLOW) if (!CONFIG_NS_IS_SLOW)
@@ -1522,7 +1522,7 @@ static int new_descriptor(socket_t s)
CLOSE_SOCKET(desc); CLOSE_SOCKET(desc);
mudlog(CMP, LVL_GOD, TRUE, "Connection attempt denied from [%s]", newd->host); mudlog(CMP, LVL_GOD, TRUE, "Connection attempt denied from [%s]", newd->host);
free(newd); free(newd);
return 0; return (0);
} }
/* initialize descriptor data */ /* initialize descriptor data */
@@ -1551,10 +1551,10 @@ static int new_descriptor(socket_t s)
* 14 bytes: overflow message * 14 bytes: overflow message
* 2 bytes: extra \r\n for non-comapct * 2 bytes: extra \r\n for non-comapct
* 14 bytes: unused */ * 14 bytes: unused */
static ssize_t process_output(descriptor_data *t) static int process_output(struct descriptor_data *t)
{ {
char i[MAX_SOCK_BUF], *osb = i + 2; char i[MAX_SOCK_BUF], *osb = i + 2;
ssize_t result; int result;
/* we may need this \r\n for later -- see below */ /* we may need this \r\n for later -- see below */
strcpy(i, "\r\n"); /* strcpy: OK (for 'MAX_SOCK_BUF >= 3') */ strcpy(i, "\r\n"); /* strcpy: OK (for 'MAX_SOCK_BUF >= 3') */
@@ -1584,14 +1584,15 @@ static ssize_t process_output(descriptor_data *t)
} else } else
result = write_to_descriptor(t->descriptor, osb); result = write_to_descriptor(t->descriptor, osb);
if (result < 0) /* Oops, fatal error. Bye! */ if (result < 0) { /* Oops, fatal error. Bye! */
return -1; // close_socket(t); // close_socket is called after return of negative result
if (result == 0) /* Socket buffer full. Try later. */ return (-1);
return 0; } else if (result == 0) /* Socket buffer full. Try later. */
return (0);
/* Handle snooping: prepend "% " and send to snooper. */ /* Handle snooping: prepend "% " and send to snooper. */
if (t->snoop_by) if (t->snoop_by)
write_to_output(t->snoop_by, "%% %*s%%%%", (int)result, t->output); write_to_output(t->snoop_by, "%% %*s%%%%", result, t->output);
/* The common case: all saved output was handed off to the kernel buffer. */ /* The common case: all saved output was handed off to the kernel buffer. */
if (result >= t->bufptr) { if (result >= t->bufptr) {
@@ -1606,17 +1607,17 @@ static ssize_t process_output(descriptor_data *t)
/* reset total bufspace back to that of a small buffer */ /* reset total bufspace back to that of a small buffer */
t->bufspace = SMALL_BUFSIZE - 1; t->bufspace = SMALL_BUFSIZE - 1;
t->bufptr = 0; t->bufptr = 0;
*t->output = '\0'; *(t->output) = '\0';
/* If the overflow message or prompt were partially written, try to save /* If the overflow message or prompt were partially written, try to save
* them. There will be enough space for them if this is true. 'result' * them. There will be enough space for them if this is true. 'result'
* is effectively unsigned here anyway. */ * is effectively unsigned here anyway. */
if ((unsigned int)result < strlen(osb)) { if ((unsigned int)result < strlen(osb)) {
const size_t savetextlen = strlen(osb + result); size_t savetextlen = strlen(osb + result);
strcat(t->output, osb + result); strcat(t->output, osb + result);
t->bufptr -= (ssize_t)savetextlen; // safe cast - savetextlen will always be <<< SSIZE_MAX t->bufptr -= savetextlen;
t->bufspace += (ssize_t)savetextlen; t->bufspace += savetextlen;
} }
} else { } else {
@@ -1626,7 +1627,7 @@ static ssize_t process_output(descriptor_data *t)
t->bufspace += result; t->bufspace += result;
} }
return result; return (result);
} }
/* perform_socket_write: takes a descriptor, a pointer to text, and a /* perform_socket_write: takes a descriptor, a pointer to text, and a
@@ -1683,13 +1684,13 @@ static ssize_t perform_socket_write(socket_t desc, const char *txt, size_t lengt
if (result > 0) { if (result > 0) {
/* Write was successful. */ /* Write was successful. */
return result; return (result);
} }
if (result == 0) { if (result == 0) {
/* This should never happen! */ /* This should never happen! */
log("SYSERR: Huh?? write() returned 0??? Please report this!"); log("SYSERR: Huh?? write() returned 0??? Please report this!");
return -1; return (-1);
} }
/* result < 0, so an error was encountered - is it transient? Unfortunately, /* result < 0, so an error was encountered - is it transient? Unfortunately,
@@ -1697,21 +1698,21 @@ static ssize_t perform_socket_write(socket_t desc, const char *txt, size_t lengt
#ifdef EAGAIN /* POSIX */ #ifdef EAGAIN /* POSIX */
if (errno == EAGAIN) if (errno == EAGAIN)
return 0; return (0);
#endif #endif
#ifdef EWOULDBLOCK /* BSD */ #ifdef EWOULDBLOCK /* BSD */
if (errno == EWOULDBLOCK) if (errno == EWOULDBLOCK)
return 0; return (0);
#endif #endif
#ifdef EDEADLK /* Macintosh */ #ifdef EDEADLK /* Macintosh */
if (errno == EDEADLK) if (errno == EDEADLK)
return 0; return (0);
#endif #endif
/* Looks like the error was fatal. Too bad. */ /* Looks like the error was fatal. Too bad. */
return -1; return (-1);
} }
#endif /* CIRCLE_WINDOWS */ #endif /* CIRCLE_WINDOWS */
@@ -1720,10 +1721,10 @@ static ssize_t perform_socket_write(socket_t desc, const char *txt, size_t lengt
* delivered to the OS, or until an error is encountered. Returns: * delivered to the OS, or until an error is encountered. Returns:
* >=0 If all is well and good. * >=0 If all is well and good.
* -1 If an error was encountered, so that the player should be cut off. */ * -1 If an error was encountered, so that the player should be cut off. */
ssize_t write_to_descriptor(socket_t desc, const char *txt) int write_to_descriptor(socket_t desc, const char *txt)
{ {
ssize_t bytes_written, write_total = 0; ssize_t bytes_written;
size_t total = strlen(txt); size_t total = strlen(txt), write_total = 0;
while (total > 0) { while (total > 0) {
bytes_written = perform_socket_write(desc, txt, total); bytes_written = perform_socket_write(desc, txt, total);
@@ -1732,17 +1733,17 @@ ssize_t write_to_descriptor(socket_t desc, const char *txt)
/* Fatal error. Disconnect the player. */ /* Fatal error. Disconnect the player. */
perror("SYSERR: Write to socket"); perror("SYSERR: Write to socket");
return (-1); return (-1);
} } else if (bytes_written == 0) {
if (bytes_written == 0) {
/* Temporary failure -- socket buffer full. */ /* Temporary failure -- socket buffer full. */
return write_total; return (write_total);
} } else {
txt += bytes_written; txt += bytes_written;
total -= bytes_written; total -= bytes_written;
write_total += bytes_written; write_total += bytes_written;
} }
}
return write_total; return (write_total);
} }
/* Same information about perform_socket_write applies here. I like /* Same information about perform_socket_write applies here. I like
@@ -1818,11 +1819,11 @@ static ssize_t perform_socket_read(socket_t desc, char *read_point, size_t space
* above, 'tmp' lost the '+8' since it doesn't need it and the code has been * above, 'tmp' lost the '+8' since it doesn't need it and the code has been
* changed to reserve space by accepting one less character. (Do you really * changed to reserve space by accepting one less character. (Do you really
* need 256 characters on a line?) -gg 1/21/2000 */ * need 256 characters on a line?) -gg 1/21/2000 */
static int process_input(descriptor_data *t) static int process_input(struct descriptor_data *t)
{ {
int failed_subst; int buf_length, failed_subst;
ssize_t bytes_read; ssize_t bytes_read;
size_t buf_length, space_left; size_t space_left;
char *ptr, *read_point, *write_point, *nl_pos = NULL; char *ptr, *read_point, *write_point, *nl_pos = NULL;
char tmp[MAX_INPUT_LENGTH]; char tmp[MAX_INPUT_LENGTH];
static char read_buf[MAX_PROTOCOL_BUFFER] = { '\0' }; /* KaVir's plugin */ static char read_buf[MAX_PROTOCOL_BUFFER] = { '\0' }; /* KaVir's plugin */
@@ -1835,7 +1836,7 @@ static int process_input(descriptor_data *t)
do { do {
if (space_left <= 0) { if (space_left <= 0) {
log("WARNING: process_input: about to close connection: input overflow"); log("WARNING: process_input: about to close connection: input overflow");
return -1; return (-1);
} }
/* Read # of "bytes_read" from socket, and if we have something, mark the sizeof data /* Read # of "bytes_read" from socket, and if we have something, mark the sizeof data
@@ -1849,9 +1850,9 @@ static int process_input(descriptor_data *t)
bytes_read = ProtocolInput( t, read_buf, bytes_read, t->inbuf ); bytes_read = ProtocolInput( t, read_buf, bytes_read, t->inbuf );
if (bytes_read < 0) /* Error, disconnect them. */ if (bytes_read < 0) /* Error, disconnect them. */
return -1; return (-1);
if (bytes_read == 0) /* Just blocking, no problems. */ else if (bytes_read == 0) /* Just blocking, no problems. */
return 0; return (0);
/* at this point, we know we got some data from the read */ /* at this point, we know we got some data from the read */
*(read_point + bytes_read) = '\0'; /* terminate the string */ *(read_point + bytes_read) = '\0'; /* terminate the string */
@@ -1911,24 +1912,23 @@ static int process_input(descriptor_data *t)
*write_point = '\0'; *write_point = '\0';
if (space_left <= 0 && ptr < nl_pos) { if ((space_left <= 0) && (ptr < nl_pos)) {
char buffer[MAX_INPUT_LENGTH + 64]; char buffer[MAX_INPUT_LENGTH + 64];
snprintf(buffer, sizeof(buffer), "Line too long. Truncated to:\r\n%s\r\n", tmp); snprintf(buffer, sizeof(buffer), "Line too long. Truncated to:\r\n%s\r\n", tmp);
if (write_to_descriptor(t->descriptor, buffer) < 0) if (write_to_descriptor(t->descriptor, buffer) < 0)
return -1; return (-1);
} }
if (t->snoop_by) if (t->snoop_by)
write_to_output(t->snoop_by, "%% %s\r\n", tmp); write_to_output(t->snoop_by, "%% %s\r\n", tmp);
failed_subst = 0; failed_subst = 0;
if (*tmp == '!' && !*(tmp + 1)) /* Redo last command. */ if (*tmp == '!' && !(*(tmp + 1))) /* Redo last command. */
strcpy(tmp, t->last_input); /* strcpy: OK (by mutual MAX_INPUT_LENGTH) */ strcpy(tmp, t->last_input); /* strcpy: OK (by mutual MAX_INPUT_LENGTH) */
else if (*tmp == '!' && *(tmp + 1)) { else if (*tmp == '!' && *(tmp + 1)) {
char *commandln = tmp + 1; char *commandln = (tmp + 1);
int starting_pos = t->history_pos, int starting_pos = t->history_pos,
cnt = t->history_pos == 0 ? HISTORY_SIZE - 1 : t->history_pos - 1; cnt = (t->history_pos == 0 ? HISTORY_SIZE - 1 : t->history_pos - 1);
skip_spaces(&commandln); skip_spaces(&commandln);
for (; cnt != starting_pos; cnt--) { for (; cnt != starting_pos; cnt--) {
@@ -1942,7 +1942,7 @@ static int process_input(descriptor_data *t)
cnt = HISTORY_SIZE; cnt = HISTORY_SIZE;
} }
} else if (*tmp == '^') { } else if (*tmp == '^') {
if (!((failed_subst = perform_subst(t, t->last_input, tmp)))) if (!(failed_subst = perform_subst(t, t->last_input, tmp)))
strcpy(t->last_input, tmp); /* strcpy: OK (by mutual MAX_INPUT_LENGTH) */ strcpy(t->last_input, tmp); /* strcpy: OK (by mutual MAX_INPUT_LENGTH) */
} else { } else {
strcpy(t->last_input, tmp); /* strcpy: OK (by mutual MAX_INPUT_LENGTH) */ strcpy(t->last_input, tmp); /* strcpy: OK (by mutual MAX_INPUT_LENGTH) */
@@ -1954,7 +1954,8 @@ static int process_input(descriptor_data *t)
} }
/* The '--' command flushes the queue. */ /* The '--' command flushes the queue. */
if ( *tmp == '-' && *(tmp+1) == '-' && !*(tmp+2) ) { if ( (*tmp == '-') && (*(tmp+1) == '-') && !(*(tmp+2)) )
{
write_to_output(t, "All queued commands cancelled.\r\n"); write_to_output(t, "All queued commands cancelled.\r\n");
flush_queues(t); /* Flush the command queue */ flush_queues(t); /* Flush the command queue */
failed_subst = 1; /* Allow the read point to be moved, but don't add to queue */ failed_subst = 1; /* Allow the read point to be moved, but don't add to queue */
@@ -1980,13 +1981,13 @@ static int process_input(descriptor_data *t)
*(write_point++) = *(read_point++); *(write_point++) = *(read_point++);
*write_point = '\0'; *write_point = '\0';
return 1; return (1);
} }
/* Perform substitution for the '^..^' csh-esque syntax orig is the orig string, /* Perform substitution for the '^..^' csh-esque syntax orig is the orig string,
* i.e. the one being modified. subst contains the substition string, i.e. * i.e. the one being modified. subst contains the substition string, i.e.
* "^telm^tell" */ * "^telm^tell" */
static int perform_subst(descriptor_data *t, const char *orig, char *subst) static int perform_subst(struct descriptor_data *t, char *orig, char *subst)
{ {
char newsub[MAX_INPUT_LENGTH + 5]; char newsub[MAX_INPUT_LENGTH + 5];
@@ -1997,16 +1998,16 @@ static int perform_subst(descriptor_data *t, const char *orig, char *subst)
first = subst + 1; first = subst + 1;
/* now find the second '^' */ /* now find the second '^' */
if (!((second = strchr(first, '^')))) { if (!(second = strchr(first, '^'))) {
write_to_output(t, "Invalid substitution.\r\n"); write_to_output(t, "Invalid substitution.\r\n");
return (1); return (1);
} }
/* terminate "first" at the position of the '^' and make 'second' point /* terminate "first" at the position of the '^' and make 'second' point
* to the beginning of the second string */ * to the beginning of the second string */
*second++ = '\0'; *(second++) = '\0';
/* now, see if the contents of the first string appear in the original */ /* now, see if the contents of the first string appear in the original */
if (!((strpos = strstr(orig, first)))) { if (!(strpos = strstr(orig, first))) {
write_to_output(t, "Invalid substitution.\r\n"); write_to_output(t, "Invalid substitution.\r\n");
return (1); return (1);
} }
@@ -2021,7 +2022,7 @@ static int perform_subst(descriptor_data *t, const char *orig, char *subst)
/* now, if there's anything left in the original after the string to /* now, if there's anything left in the original after the string to
* replaced, copy that too. */ * replaced, copy that too. */
if (strpos - orig + strlen(first) < strlen(orig)) if (((strpos - orig) + strlen(first)) < strlen(orig))
strncat(newsub, strpos + strlen(first), MAX_INPUT_LENGTH - strlen(newsub) - 1); /* strncpy: OK */ strncat(newsub, strpos + strlen(first), MAX_INPUT_LENGTH - strlen(newsub) - 1); /* strncpy: OK */
/* terminate the string in case of an overflow from strncat */ /* terminate the string in case of an overflow from strncat */
@@ -2031,9 +2032,9 @@ static int perform_subst(descriptor_data *t, const char *orig, char *subst)
return (0); return (0);
} }
void close_socket(descriptor_data *d) void close_socket(struct descriptor_data *d)
{ {
descriptor_data *temp; struct descriptor_data *temp;
REMOVE_FROM_LIST(d, descriptor_list, next); REMOVE_FROM_LIST(d, descriptor_list, next);
CLOSE_SOCKET(d->descriptor); CLOSE_SOCKET(d->descriptor);
@@ -2066,7 +2067,7 @@ void close_socket(descriptor_data *d)
add_llog_entry(d->character, LAST_DISCONNECT); add_llog_entry(d->character, LAST_DISCONNECT);
if (IS_PLAYING(d) || STATE(d) == CON_DISCONNECT) { if (IS_PLAYING(d) || STATE(d) == CON_DISCONNECT) {
char_data *link_challenged = d->original ? d->original : d->character; struct char_data *link_challenged = d->original ? d->original : d->character;
/* We are guaranteed to have a person. */ /* We are guaranteed to have a person. */
act("$n has lost $s link.", TRUE, link_challenged, 0, 0, TO_ROOM); act("$n has lost $s link.", TRUE, link_challenged, 0, 0, TO_ROOM);
@@ -2134,7 +2135,7 @@ void close_socket(descriptor_data *d)
static void check_idle_passwords(void) static void check_idle_passwords(void)
{ {
descriptor_data *d, *next_d; struct descriptor_data *d, *next_d;
for (d = descriptor_list; d; d = next_d) { for (d = descriptor_list; d; d = next_d) {
next_d = d->next; next_d = d->next;
@@ -2143,12 +2144,13 @@ static void check_idle_passwords(void)
if (!d->idle_tics) { if (!d->idle_tics) {
d->idle_tics++; d->idle_tics++;
continue; continue;
} } else {
echo_on(d); echo_on(d);
write_to_output(d, "\r\nTimed out... goodbye.\r\n"); write_to_output(d, "\r\nTimed out... goodbye.\r\n");
STATE(d) = CON_CLOSE; STATE(d) = CON_CLOSE;
} }
} }
}
/* I tried to universally convert Circle over to POSIX compliance, but /* I tried to universally convert Circle over to POSIX compliance, but
* alas, some systems are still straggling behind and don't have all the * alas, some systems are still straggling behind and don't have all the
@@ -2229,8 +2231,7 @@ static RETSIGTYPE unrestrict_game(int sig)
/* clean up our zombie kids to avoid defunct processes */ /* clean up our zombie kids to avoid defunct processes */
static RETSIGTYPE reap(int sig) static RETSIGTYPE reap(int sig)
{ {
while (waitpid(-1, NULL, WNOHANG) > 0) while (waitpid(-1, NULL, WNOHANG) > 0);
;
my_signal(SIGCHLD, reap); my_signal(SIGCHLD, reap);
} }
@@ -2323,7 +2324,7 @@ static void signal_setup(void)
/* Public routines for system-to-player-communication. */ /* Public routines for system-to-player-communication. */
void game_info(const char *format, ...) void game_info(const char *format, ...)
{ {
descriptor_data *i; struct descriptor_data *i;
va_list args; va_list args;
char messg[MAX_STRING_LENGTH]; char messg[MAX_STRING_LENGTH];
if (format == NULL) if (format == NULL)
@@ -2343,7 +2344,7 @@ void game_info(const char *format, ...)
} }
} }
size_t send_to_char(const char_data *ch, const char *messg, ...) size_t send_to_char(struct char_data *ch, const char *messg, ...)
{ {
if (ch->desc && messg && *messg) { if (ch->desc && messg && *messg) {
size_t left; size_t left;
@@ -2359,7 +2360,7 @@ size_t send_to_char(const char_data *ch, const char *messg, ...)
void send_to_all(const char *messg, ...) void send_to_all(const char *messg, ...)
{ {
descriptor_data *i; struct descriptor_data *i;
va_list args; va_list args;
if (messg == NULL) if (messg == NULL)
@@ -2377,7 +2378,7 @@ void send_to_all(const char *messg, ...)
void send_to_outdoor(const char *messg, ...) void send_to_outdoor(const char *messg, ...)
{ {
descriptor_data *i; struct descriptor_data *i;
va_list args; va_list args;
if (!messg || !*messg) if (!messg || !*messg)
@@ -2398,7 +2399,7 @@ void send_to_outdoor(const char *messg, ...)
void send_to_room(room_rnum room, const char *messg, ...) void send_to_room(room_rnum room, const char *messg, ...)
{ {
char_data *i; struct char_data *i;
va_list args; va_list args;
if (messg == NULL) if (messg == NULL)
@@ -2417,9 +2418,9 @@ void send_to_room(room_rnum room, const char *messg, ...)
/* Sends a message to the entire group, except for ch. /* Sends a message to the entire group, except for ch.
* Send 'ch' as NULL, if you want to message to reach * Send 'ch' as NULL, if you want to message to reach
* everyone. -Vatiken */ * everyone. -Vatiken */
void send_to_group(const char_data *ch, const struct group_data *group, const char * msg, ...) void send_to_group(struct char_data *ch, struct group_data *group, const char * msg, ...)
{ {
char_data *tch; struct char_data *tch;
va_list args; va_list args;
if (msg == NULL) if (msg == NULL)
@@ -2440,15 +2441,10 @@ void send_to_group(const char_data *ch, const struct group_data *group, const ch
/* Thx to Jamie Nelson of 4D for this contribution */ /* Thx to Jamie Nelson of 4D for this contribution */
void send_to_range(room_vnum start, room_vnum finish, const char *messg, ...) void send_to_range(room_vnum start, room_vnum finish, const char *messg, ...)
{ {
char_data *i; struct char_data *i;
va_list args; va_list args;
int j; int j;
if (start == NOWHERE || finish == NOWHERE) {
log("send_to_range passed start room or end room NOWHERE.");
return;
}
if (start > finish) { if (start > finish) {
log("send_to_range passed start room value greater then finish."); log("send_to_range passed start room value greater then finish.");
return; return;
@@ -2474,15 +2470,14 @@ static const char *ACTNULL = "<NULL>";
#define CHECK_NULL(pointer, expression) \ #define CHECK_NULL(pointer, expression) \
if ((pointer) == NULL) i = ACTNULL; else i = (expression); if ((pointer) == NULL) i = ACTNULL; else i = (expression);
/* higher-level communication: the act() function */ /* higher-level communication: the act() function */
void perform_act(const char *orig, char_data *ch, obj_data *obj, void perform_act(const char *orig, struct char_data *ch, struct obj_data *obj,
// ReSharper disable once CppParameterMayBeConstPtrOrRef void *vict_obj, struct char_data *to)
void *vict_obj, char_data *to)
{ {
const char *i = NULL; const char *i = NULL;
char lbuf[MAX_STRING_LENGTH], *buf, *j; char lbuf[MAX_STRING_LENGTH], *buf, *j;
bool uppercasenext = FALSE; bool uppercasenext = FALSE;
char_data *dg_victim = (to == vict_obj) ? vict_obj : NULL; struct char_data *dg_victim = (to == vict_obj) ? vict_obj : NULL;
obj_data *dg_target = NULL; struct obj_data *dg_target = NULL;
char *dg_arg = NULL; char *dg_arg = NULL;
buf = lbuf; buf = lbuf;
@@ -2494,50 +2489,50 @@ void perform_act(const char *orig, char_data *ch, obj_data *obj,
i = PERS(ch, to); i = PERS(ch, to);
break; break;
case 'N': case 'N':
CHECK_NULL(vict_obj, PERS((const char_data *) vict_obj, to)); CHECK_NULL(vict_obj, PERS((const struct char_data *) vict_obj, to));
dg_victim = (char_data *) vict_obj; dg_victim = (struct char_data *) vict_obj;
break; break;
case 'm': case 'm':
i = HMHR(ch); i = HMHR(ch);
break; break;
case 'M': case 'M':
CHECK_NULL(vict_obj, HMHR((const char_data *) vict_obj)); CHECK_NULL(vict_obj, HMHR((const struct char_data *) vict_obj));
dg_victim = (char_data *) vict_obj; dg_victim = (struct char_data *) vict_obj;
break; break;
case 's': case 's':
i = HSHR(ch); i = HSHR(ch);
break; break;
case 'S': case 'S':
CHECK_NULL(vict_obj, HSHR((const char_data *) vict_obj)); CHECK_NULL(vict_obj, HSHR((const struct char_data *) vict_obj));
dg_victim = (char_data *) vict_obj; dg_victim = (struct char_data *) vict_obj;
break; break;
case 'e': case 'e':
i = HSSH(ch); i = HSSH(ch);
break; break;
case 'E': case 'E':
CHECK_NULL(vict_obj, HSSH((const char_data *) vict_obj)); CHECK_NULL(vict_obj, HSSH((const struct char_data *) vict_obj));
dg_victim = (char_data *) vict_obj; dg_victim = (struct char_data *) vict_obj;
break; break;
case 'o': case 'o':
CHECK_NULL(obj, OBJN(obj, to)); CHECK_NULL(obj, OBJN(obj, to));
break; break;
case 'O': case 'O':
CHECK_NULL(vict_obj, OBJN((const obj_data *) vict_obj, to)); CHECK_NULL(vict_obj, OBJN((const struct obj_data *) vict_obj, to));
dg_target = (obj_data *) vict_obj; dg_target = (struct obj_data *) vict_obj;
break; break;
case 'p': case 'p':
CHECK_NULL(obj, OBJS(obj, to)); CHECK_NULL(obj, OBJS(obj, to));
break; break;
case 'P': case 'P':
CHECK_NULL(vict_obj, OBJS((const obj_data *) vict_obj, to)); CHECK_NULL(vict_obj, OBJS((const struct obj_data *) vict_obj, to));
dg_target = (obj_data *) vict_obj; dg_target = (struct obj_data *) vict_obj;
break; break;
case 'a': case 'a':
CHECK_NULL(obj, SANA(obj)); CHECK_NULL(obj, SANA(obj));
break; break;
case 'A': case 'A':
CHECK_NULL(vict_obj, SANA((const obj_data *) vict_obj)); CHECK_NULL(vict_obj, SANA((const struct obj_data *) vict_obj));
dg_target = (obj_data *) vict_obj; dg_target = (struct obj_data *) vict_obj;
break; break;
case 'T': case 'T':
CHECK_NULL(vict_obj, (const char *) vict_obj); CHECK_NULL(vict_obj, (const char *) vict_obj);
@@ -2547,12 +2542,11 @@ void perform_act(const char *orig, char_data *ch, obj_data *obj,
CHECK_NULL(obj, (char *) obj); CHECK_NULL(obj, (char *) obj);
break; break;
case 'F': case 'F':
CHECK_NULL(vict_obj, fname(vict_obj)); CHECK_NULL(vict_obj, fname((const char *) vict_obj));
break; break;
/* uppercase previous word */ /* uppercase previous word */
case 'u': case 'u':
for (j=buf; j > lbuf && !isspace((int) *(j-1)); j--) for (j=buf; j > lbuf && !isspace((int) *(j-1)); j--);
;
if (j != buf) if (j != buf)
*j = UPPER(*j); *j = UPPER(*j);
i = ""; i = "";
@@ -2571,15 +2565,17 @@ void perform_act(const char *orig, char_data *ch, obj_data *obj,
i = ""; i = "";
break; break;
} }
while ((*buf = *(i++))) { while ((*buf = *(i++)))
if (uppercasenext && !isspace((int) *buf)) { {
if (uppercasenext && !isspace((int) *buf))
{
*buf = UPPER(*buf); *buf = UPPER(*buf);
uppercasenext = FALSE; uppercasenext = FALSE;
} }
buf++; buf++;
} }
orig++; orig++;
} else if (!((*buf++ = *orig++))) { } else if (!(*(buf++) = *(orig++))) {
break; break;
} else if (uppercasenext && !isspace((int) *(buf-1))) { } else if (uppercasenext && !isspace((int) *(buf-1))) {
*(buf-1) = UPPER(*(buf-1)); *(buf-1) = UPPER(*(buf-1));
@@ -2602,10 +2598,10 @@ void perform_act(const char *orig, char_data *ch, obj_data *obj,
last_act_message = strdup(lbuf); last_act_message = strdup(lbuf);
} }
char *act(const char *str, int hide_invisible, char_data *ch, char *act(const char *str, int hide_invisible, struct char_data *ch,
obj_data *obj, void *vict_obj, int type) struct obj_data *obj, void *vict_obj, int type)
{ {
char_data *to; struct char_data *to;
int to_sleeping; int to_sleeping;
if (!str || !*str) if (!str || !*str)
@@ -2620,12 +2616,12 @@ char *act(const char *str, int hide_invisible, char_data *ch,
* short, it is a hack. */ * short, it is a hack. */
/* check if TO_SLEEP is there, and remove it if it is. */ /* check if TO_SLEEP is there, and remove it if it is. */
if ((to_sleeping = type & TO_SLEEP)) if ((to_sleeping = (type & TO_SLEEP)))
type &= ~TO_SLEEP; type &= ~TO_SLEEP;
/* this is a hack as well - DG_NO_TRIG is 256 -- Welcor */ /* this is a hack as well - DG_NO_TRIG is 256 -- Welcor */
/* If the bit is set, unset dg_act_check, thus the ! below */ /* If the bit is set, unset dg_act_check, thus the ! below */
if (!((dg_act_check = !IS_SET(type, DG_NO_TRIG)))) if (!(dg_act_check = !IS_SET(type, DG_NO_TRIG)))
REMOVE_BIT(type, DG_NO_TRIG); REMOVE_BIT(type, DG_NO_TRIG);
if (type == TO_CHAR) { if (type == TO_CHAR) {
@@ -2645,7 +2641,7 @@ char *act(const char *str, int hide_invisible, char_data *ch,
} }
if (type == TO_GMOTE && !IS_NPC(ch)) { if (type == TO_GMOTE && !IS_NPC(ch)) {
descriptor_data *i; struct descriptor_data *i;
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
for (i = descriptor_list; i; i = i->next) { for (i = descriptor_list; i; i = i->next) {
@@ -2768,17 +2764,17 @@ static void circle_sleep(struct timeval *timeout)
/* KaVir's plugin*/ /* KaVir's plugin*/
static void msdp_update( void ) static void msdp_update( void )
{ {
descriptor_data *d; struct descriptor_data *d;
int PlayerCount = 0; int PlayerCount = 0;
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
extern const char *pc_class_types[]; extern const char *pc_class_types[];
for (d = descriptor_list; d; d = d->next) for (d = descriptor_list; d; d = d->next)
{ {
char_data *ch = d->character; struct char_data *ch = d->character;
if ( ch && !IS_NPC(ch) && d->connected == CON_PLAYING ) if ( ch && !IS_NPC(ch) && d->connected == CON_PLAYING )
{ {
char_data *pOpponent = FIGHTING(ch); struct char_data *pOpponent = FIGHTING(ch);
++PlayerCount; ++PlayerCount;
MSDPSetString( d, eMSDP_CHARACTER_NAME, GET_NAME(ch) ); MSDPSetString( d, eMSDP_CHARACTER_NAME, GET_NAME(ch) );

View File

@@ -17,14 +17,20 @@
#define COPYOVER_FILE "copyover.dat" #define COPYOVER_FILE "copyover.dat"
/* comm.c */ /* comm.c */
void close_socket(descriptor_data *d); void close_socket(struct descriptor_data *d);
void game_info(const char *messg, ...) __attribute__ ((format (printf, 1, 2))); void game_info(const char *messg, ...) __attribute__ ((format (printf, 1, 2)));
size_t send_to_char(const char_data *ch, const char *messg, ...) __attribute__((format (printf, 2, 3))); size_t send_to_char(struct char_data *ch, const char *messg, ...) __attribute__
void send_to_all(const char *messg, ...) __attribute__ ((format (printf, 1, 2))); ((format (printf, 2, 3)));
void send_to_room(room_rnum room, const char *messg, ...) __attribute__ ((format (printf, 2, 3))); void send_to_all(const char *messg, ...) __attribute__ ((format (printf, 1,
void send_to_outdoor(const char *messg, ...) __attribute__ ((format (printf, 1, 2))); 2)));
void send_to_group(const char_data *ch, const struct group_data *group, const char * msg, ...) __attribute__ ((format(printf, 3, 4))); void send_to_room(room_rnum room, const char *messg, ...) __attribute__ ((format
void send_to_range(room_vnum start, room_vnum finish, const char *messg, ...) __attribute__ ((format (printf, 3, 4))); (printf, 2, 3)));
void send_to_outdoor(const char *messg, ...) __attribute__ ((format (printf, 1,
2)));
void send_to_group(struct char_data *ch, struct group_data *group, const char * msg, ...) __attribute__ ((format
(printf, 3, 4)));
void send_to_range(room_vnum start, room_vnum finish, const char *messg, ...)
__attribute__ ((format (printf, 3, 4)));
/* Act type settings and flags */ /* Act type settings and flags */
#define TO_ROOM 1 /**< act() type: to everyone in room, except ch. */ #define TO_ROOM 1 /**< act() type: to everyone in room, except ch. */
@@ -37,24 +43,24 @@ void send_to_range(room_vnum start, room_vnum finish, const char *messg, ...) __
/* act functions */ /* act functions */
void perform_act(const char *orig, char_data *ch, obj_data *obj, void *vict_obj, char_data *to); void perform_act(const char *orig, struct char_data *ch, struct obj_data *obj, void *vict_obj, struct char_data *to);
char * act(const char *str, int hide_invisible, char_data *ch, obj_data *obj, void *vict_obj, int type); char * act(const char *str, int hide_invisible, struct char_data *ch, struct obj_data *obj, void *vict_obj, int type);
/* I/O functions */ /* I/O functions */
void write_to_q(const char *txt, struct txt_q *queue, int aliased); void write_to_q(const char *txt, struct txt_q *queue, int aliased);
ssize_t write_to_descriptor(socket_t desc, const char *txt); int write_to_descriptor(socket_t desc, const char *txt);
size_t write_to_output(descriptor_data *d, const char *txt, ...) __attribute__ ((format (printf, 2, 3))); size_t write_to_output(struct descriptor_data *d, const char *txt, ...) __attribute__ ((format (printf, 2, 3)));
size_t vwrite_to_output(descriptor_data *d, const char *format, va_list args); size_t vwrite_to_output(struct descriptor_data *d, const char *format, va_list args);
typedef RETSIGTYPE sigfunc(int); typedef RETSIGTYPE sigfunc(int);
void echo_off(descriptor_data *d); void echo_off(struct descriptor_data *d);
void echo_on(descriptor_data *d); void echo_on(struct descriptor_data *d);
void game_loop(socket_t mother_desc); void game_loop(socket_t mother_desc);
void heartbeat(unsigned long heart_pulse); void heartbeat(int heart_pulse);
void copyover_recover(void); void copyover_recover(void);
extern descriptor_data *descriptor_list; extern struct descriptor_data *descriptor_list;
extern int buf_largecount; extern int buf_largecount;
extern int buf_overflows; extern int buf_overflows;
extern int buf_switches; extern int buf_switches;

104
src/db.c
View File

@@ -46,14 +46,14 @@ struct config_data config_info; /* Game configuration list. */
struct room_data *world = NULL; /* array of rooms */ struct room_data *world = NULL; /* array of rooms */
room_rnum top_of_world = 0; /* ref to top element of world */ room_rnum top_of_world = 0; /* ref to top element of world */
char_data *character_list = NULL; /* global linked list of chars */ struct char_data *character_list = NULL; /* global linked list of chars */
struct index_data *mob_index; /* index table for mobile file */ struct index_data *mob_index; /* index table for mobile file */
char_data *mob_proto; /* prototypes for mobs */ struct char_data *mob_proto; /* prototypes for mobs */
mob_rnum top_of_mobt = 0; /* top of mobile index table */ mob_rnum top_of_mobt = 0; /* top of mobile index table */
obj_data *object_list = NULL; /* global linked list of objs */ struct obj_data *object_list = NULL; /* global linked list of objs */
struct index_data *obj_index; /* index table for object file */ struct index_data *obj_index; /* index table for object file */
obj_data *obj_proto; /* prototypes for objs */ struct obj_data *obj_proto; /* prototypes for objs */
obj_rnum top_of_objt = 0; /* top of object index table */ obj_rnum top_of_objt = 0; /* top of object index table */
struct zone_data *zone_table; /* zone table */ struct zone_data *zone_table; /* zone table */
@@ -128,9 +128,9 @@ static int converting = FALSE;
/* Local (file scope) utility functions */ /* Local (file scope) utility functions */
static int check_bitvector_names(bitvector_t bits, size_t namecount, const char *whatami, const char *whatbits); static int check_bitvector_names(bitvector_t bits, size_t namecount, const char *whatami, const char *whatbits);
static int check_object_spell_number(obj_data *obj, int val); static int check_object_spell_number(struct obj_data *obj, int val);
static int check_object_level(obj_data *obj, int val); static int check_object_level(struct obj_data *obj, int val);
static int check_object(obj_data *); static int check_object(struct obj_data *);
static void load_zones(FILE *fl, char *zonename); static void load_zones(FILE *fl, char *zonename);
static int file_to_string(const char *name, char *buf); static int file_to_string(const char *name, char *buf);
static int file_to_string_alloc(const char *name, char **buf); static int file_to_string_alloc(const char *name, char **buf);
@@ -501,8 +501,8 @@ static void free_extra_descriptions(struct extra_descr_data *edesc)
void destroy_db(void) void destroy_db(void)
{ {
ssize_t cnt, itr; ssize_t cnt, itr;
char_data *chtmp, *i = character_list; struct char_data *chtmp, *i = character_list;
obj_data *objtmp; struct obj_data *objtmp;
/* Active Mobiles & Players */ /* Active Mobiles & Players */
while (i) { while (i) {
@@ -1040,17 +1040,17 @@ void index_boot(int mode)
log(" %d rooms, %d bytes.", rec_count, size[0]); log(" %d rooms, %d bytes.", rec_count, size[0]);
break; break;
case DB_BOOT_MOB: case DB_BOOT_MOB:
CREATE(mob_proto, char_data, rec_count); CREATE(mob_proto, struct char_data, rec_count);
CREATE(mob_index, struct index_data, rec_count); CREATE(mob_index, struct index_data, rec_count);
size[0] = sizeof(struct index_data) * rec_count; size[0] = sizeof(struct index_data) * rec_count;
size[1] = sizeof(char_data) * rec_count; size[1] = sizeof(struct char_data) * rec_count;
log(" %d mobs, %d bytes in index, %d bytes in prototypes.", rec_count, size[0], size[1]); log(" %d mobs, %d bytes in index, %d bytes in prototypes.", rec_count, size[0], size[1]);
break; break;
case DB_BOOT_OBJ: case DB_BOOT_OBJ:
CREATE(obj_proto, obj_data, rec_count); CREATE(obj_proto, struct obj_data, rec_count);
CREATE(obj_index, struct index_data, rec_count); CREATE(obj_index, struct index_data, rec_count);
size[0] = sizeof(struct index_data) * rec_count; size[0] = sizeof(struct index_data) * rec_count;
size[1] = sizeof(obj_data) * rec_count; size[1] = sizeof(struct obj_data) * rec_count;
log(" %d objs, %d bytes in index, %d bytes in prototypes.", rec_count, size[0], size[1]); log(" %d objs, %d bytes in index, %d bytes in prototypes.", rec_count, size[0], size[1]);
break; break;
case DB_BOOT_ZON: case DB_BOOT_ZON:
@@ -2349,7 +2349,7 @@ static int hsort(const void *a, const void *b)
return (str_cmp(a1->keywords, b1->keywords)); return (str_cmp(a1->keywords, b1->keywords));
} }
int vnum_mobile(char *searchname, char_data *ch) int vnum_mobile(char *searchname, struct char_data *ch)
{ {
int nr, found = 0; int nr, found = 0;
@@ -2362,7 +2362,7 @@ int vnum_mobile(char *searchname, char_data *ch)
return (found); return (found);
} }
int vnum_object(char *searchname, char_data *ch) int vnum_object(char *searchname, struct char_data *ch)
{ {
int nr, found = 0; int nr, found = 0;
@@ -2375,7 +2375,7 @@ int vnum_object(char *searchname, char_data *ch)
return (found); return (found);
} }
int vnum_room(char *searchname, char_data *ch) int vnum_room(char *searchname, struct char_data *ch)
{ {
int nr, found = 0; int nr, found = 0;
@@ -2387,7 +2387,7 @@ int vnum_room(char *searchname, char_data *ch)
return (found); return (found);
} }
int vnum_trig(char *searchname, char_data *ch) int vnum_trig(char *searchname, struct char_data *ch)
{ {
int nr, found = 0; int nr, found = 0;
for (nr = 0; nr < top_of_trigt; nr++) for (nr = 0; nr < top_of_trigt; nr++)
@@ -2398,11 +2398,11 @@ int vnum_trig(char *searchname, char_data *ch)
} }
/* create a character, and add it to the char list */ /* create a character, and add it to the char list */
char_data *create_char(void) struct char_data *create_char(void)
{ {
char_data *ch; struct char_data *ch;
CREATE(ch, char_data, 1); CREATE(ch, struct char_data, 1);
clear_char(ch); clear_char(ch);
new_mobile_data(ch); new_mobile_data(ch);
@@ -2415,7 +2415,7 @@ char_data *create_char(void)
return (ch); return (ch);
} }
void new_mobile_data(char_data *ch) void new_mobile_data(struct char_data *ch)
{ {
ch->events = NULL; ch->events = NULL;
ch->group = NULL; ch->group = NULL;
@@ -2423,10 +2423,10 @@ void new_mobile_data(char_data *ch)
/* create a new mobile from a prototype */ /* create a new mobile from a prototype */
char_data *read_mobile(mob_vnum nr, int type) /* and mob_rnum */ struct char_data *read_mobile(mob_vnum nr, int type) /* and mob_rnum */
{ {
mob_rnum i; mob_rnum i;
char_data *mob; struct char_data *mob;
if (type == VIRTUAL) { if (type == VIRTUAL) {
if ((i = real_mobile(nr)) == NOBODY) { if ((i = real_mobile(nr)) == NOBODY) {
@@ -2436,7 +2436,7 @@ char_data *read_mobile(mob_vnum nr, int type) /* and mob_rnum */
} else } else
i = nr; i = nr;
CREATE(mob, char_data, 1); CREATE(mob, struct char_data, 1);
clear_char(mob); clear_char(mob);
*mob = mob_proto[i]; *mob = mob_proto[i];
@@ -2470,11 +2470,11 @@ char_data *read_mobile(mob_vnum nr, int type) /* and mob_rnum */
} }
/* create an object, and add it to the object list */ /* create an object, and add it to the object list */
obj_data *create_obj(void) struct obj_data *create_obj(void)
{ {
obj_data *obj; struct obj_data *obj;
CREATE(obj, obj_data, 1); CREATE(obj, struct obj_data, 1);
clear_object(obj); clear_object(obj);
obj->next = object_list; obj->next = object_list;
object_list = obj; object_list = obj;
@@ -2487,9 +2487,9 @@ obj_data *create_obj(void)
} }
/* create a new object from a prototype */ /* create a new object from a prototype */
obj_data *read_object(obj_vnum nr, int type) /* and obj_rnum */ struct obj_data *read_object(obj_vnum nr, int type) /* and obj_rnum */
{ {
obj_data *obj; struct obj_data *obj;
obj_rnum i = type == VIRTUAL ? real_object(nr) : nr; obj_rnum i = type == VIRTUAL ? real_object(nr) : nr;
if (i == NOTHING || i > top_of_objt) { if (i == NOTHING || i > top_of_objt) {
@@ -2497,7 +2497,7 @@ obj_data *read_object(obj_vnum nr, int type) /* and obj_rnum */
return (NULL); return (NULL);
} }
CREATE(obj, obj_data, 1); CREATE(obj, struct obj_data, 1);
clear_object(obj); clear_object(obj);
*obj = obj_proto[i]; *obj = obj_proto[i];
obj->next = object_list; obj->next = object_list;
@@ -2565,7 +2565,7 @@ void zone_update(void)
reset_zone(update_u->zone_to_reset); reset_zone(update_u->zone_to_reset);
mudlog(CMP, LVL_IMPL+1, FALSE, "Auto zone reset: %s (Zone %d)", mudlog(CMP, LVL_IMPL+1, FALSE, "Auto zone reset: %s (Zone %d)",
zone_table[update_u->zone_to_reset].name, zone_table[update_u->zone_to_reset].number); zone_table[update_u->zone_to_reset].name, zone_table[update_u->zone_to_reset].number);
descriptor_data *pt; struct descriptor_data *pt;
for (pt = descriptor_list; pt; pt = pt->next) for (pt = descriptor_list; pt; pt = pt->next)
if (IS_PLAYING(pt) && pt->character && PRF_FLAGGED(pt->character, PRF_ZONERESETS)) if (IS_PLAYING(pt) && pt->character && PRF_FLAGGED(pt->character, PRF_ZONERESETS))
send_to_char(pt->character, "%s[Auto zone reset: %s (Zone %d)]%s", send_to_char(pt->character, "%s[Auto zone reset: %s (Zone %d)]%s",
@@ -2603,12 +2603,12 @@ static void log_zone_error(zone_rnum zone, int cmd_no, const char *message)
void reset_zone(zone_rnum zone) void reset_zone(zone_rnum zone)
{ {
int cmd_no, last_cmd = 0; int cmd_no, last_cmd = 0;
char_data *mob = NULL; struct char_data *mob = NULL;
obj_data *obj, *obj_to; struct obj_data *obj, *obj_to;
room_vnum rvnum; room_vnum rvnum;
room_rnum rrnum; room_rnum rrnum;
char_data *tmob=NULL; /* for trigger assignment */ struct char_data *tmob=NULL; /* for trigger assignment */
obj_data *tobj=NULL; /* for trigger assignment */ struct obj_data *tobj=NULL; /* for trigger assignment */
for (cmd_no = 0; ZCMD.command != 'S'; cmd_no++) { for (cmd_no = 0; ZCMD.command != 'S'; cmd_no++) {
@@ -2835,7 +2835,7 @@ void reset_zone(zone_rnum zone)
/* for use in reset_zone; return TRUE if zone 'nr' is free of PC's */ /* for use in reset_zone; return TRUE if zone 'nr' is free of PC's */
int is_empty(zone_rnum zone_nr) int is_empty(zone_rnum zone_nr)
{ {
descriptor_data *i; struct descriptor_data *i;
for (i = descriptor_list; i; i = i->next) { for (i = descriptor_list; i; i = i->next) {
if (STATE(i) != CON_PLAYING) if (STATE(i) != CON_PLAYING)
@@ -3226,7 +3226,7 @@ static void free_followers(struct follow_type *k)
} }
/* release memory allocated for a char struct */ /* release memory allocated for a char struct */
void free_char(char_data *ch) void free_char(struct char_data *ch)
{ {
int i; int i;
struct alias_data *a; struct alias_data *a;
@@ -3320,7 +3320,7 @@ void free_char(char_data *ch)
} }
/* release memory allocated for an obj struct */ /* release memory allocated for an obj struct */
void free_obj(obj_data *obj) void free_obj(struct obj_data *obj)
{ {
if (GET_OBJ_RNUM(obj) == NOWHERE) { if (GET_OBJ_RNUM(obj) == NOWHERE) {
free_object_strings(obj); free_object_strings(obj);
@@ -3357,7 +3357,7 @@ static int file_to_string_alloc(const char *name, char **buf)
{ {
int temppage; int temppage;
char temp[MAX_STRING_LENGTH]; char temp[MAX_STRING_LENGTH];
descriptor_data *in_use; struct descriptor_data *in_use;
for (in_use = descriptor_list; in_use; in_use = in_use->next) for (in_use = descriptor_list; in_use; in_use = in_use->next)
if (in_use->showstr_vector && *in_use->showstr_vector == *buf) if (in_use->showstr_vector && *in_use->showstr_vector == *buf)
@@ -3435,7 +3435,7 @@ static int file_to_string(const char *name, char *buf)
} }
/* clear some of the the working variables of a char */ /* clear some of the the working variables of a char */
void reset_char(char_data *ch) void reset_char(struct char_data *ch)
{ {
int i; int i;
@@ -3467,9 +3467,9 @@ void reset_char(char_data *ch)
} }
/* clear ALL the working variables of a char; do NOT free any space alloc'ed */ /* clear ALL the working variables of a char; do NOT free any space alloc'ed */
void clear_char(char_data *ch) void clear_char(struct char_data *ch)
{ {
memset((char *) ch, 0, sizeof(char_data)); memset((char *) ch, 0, sizeof(struct char_data));
IN_ROOM(ch) = NOWHERE; IN_ROOM(ch) = NOWHERE;
GET_PFILEPOS(ch) = -1; GET_PFILEPOS(ch) = -1;
@@ -3484,9 +3484,9 @@ void clear_char(char_data *ch)
ch->points.max_mana = 100; ch->points.max_mana = 100;
} }
void clear_object(obj_data *obj) void clear_object(struct obj_data *obj)
{ {
memset((char *) obj, 0, sizeof(obj_data)); memset((char *) obj, 0, sizeof(struct obj_data));
obj->item_number = NOTHING; obj->item_number = NOTHING;
IN_ROOM(obj) = NOWHERE; IN_ROOM(obj) = NOWHERE;
@@ -3495,7 +3495,7 @@ void clear_object(obj_data *obj)
/* Called during character creation after picking character class (and then /* Called during character creation after picking character class (and then
* never again for that character). */ * never again for that character). */
void init_char(char_data *ch) void init_char(struct char_data *ch)
{ {
int i; int i;
@@ -3597,7 +3597,7 @@ room_rnum real_room(room_vnum vnum)
bot = 0; bot = 0;
top = top_of_world; top = top_of_world;
if (vnum == NOWHERE || world[bot].number > vnum || world[top].number < vnum) if (world[bot].number > vnum || world[top].number < vnum)
return (NOWHERE); return (NOWHERE);
/* perform binary search on world-table */ /* perform binary search on world-table */
@@ -3623,7 +3623,7 @@ mob_rnum real_mobile(mob_vnum vnum)
top = top_of_mobt; top = top_of_mobt;
/* quickly reject out-of-range vnums */ /* quickly reject out-of-range vnums */
if (vnum == NOBODY || mob_index[bot].vnum > vnum || mob_index[top].vnum < vnum) if (mob_index[bot].vnum > vnum || mob_index[top].vnum < vnum)
return (NOBODY); return (NOBODY);
/* perform binary search on mob-table */ /* perform binary search on mob-table */
@@ -3649,7 +3649,7 @@ obj_rnum real_object(obj_vnum vnum)
top = top_of_objt; top = top_of_objt;
/* quickly reject out-of-range vnums */ /* quickly reject out-of-range vnums */
if (vnum == NOTHING || obj_index[bot].vnum > vnum || obj_index[top].vnum < vnum) if (obj_index[bot].vnum > vnum || obj_index[top].vnum < vnum)
return (NOTHING); return (NOTHING);
/* perform binary search on obj-table */ /* perform binary search on obj-table */
@@ -3674,7 +3674,7 @@ zone_rnum real_zone(zone_vnum vnum)
bot = 0; bot = 0;
top = top_of_zone_table; top = top_of_zone_table;
if (vnum == NOWHERE || zone_table[bot].number > vnum || zone_table[top].number < vnum) if (zone_table[bot].number > vnum || zone_table[top].number < vnum)
return (NOWHERE); return (NOWHERE);
/* perform binary search on zone-table */ /* perform binary search on zone-table */
@@ -3692,7 +3692,7 @@ zone_rnum real_zone(zone_vnum vnum)
} }
/* Extend later to include more checks and add checks for unknown bitvectors. */ /* Extend later to include more checks and add checks for unknown bitvectors. */
static int check_object(obj_data *obj) static int check_object(struct obj_data *obj)
{ {
char objname[MAX_INPUT_LENGTH + 32]; char objname[MAX_INPUT_LENGTH + 32];
int error = FALSE, y; int error = FALSE, y;
@@ -3770,7 +3770,7 @@ static int check_object(obj_data *obj)
return (error); return (error);
} }
static int check_object_spell_number(obj_data *obj, int val) static int check_object_spell_number(struct obj_data *obj, int val)
{ {
int error = FALSE; int error = FALSE;
const char *spellname; const char *spellname;
@@ -3804,7 +3804,7 @@ static int check_object_spell_number(obj_data *obj, int val)
return (error); return (error);
} }
static int check_object_level(obj_data *obj, int val) static int check_object_level(struct obj_data *obj, int val)
{ {
int error = FALSE; int error = FALSE;

View File

@@ -174,7 +174,8 @@ struct reset_com {
/* zone definition structure. for the 'zone-table' */ /* zone definition structure. for the 'zone-table' */
struct zone_data { struct zone_data {
char *name; /* name of this zone */ char *name; /* name of this zone */
char *builders; /* namelist of builders allowed to modify this zone. */ char *builders; /* namelist of builders allowed to */
/* modify this zone. */
int lifespan; /* how long between resets (minutes) */ int lifespan; /* how long between resets (minutes) */
int age; /* current age of this zone (minutes) */ int age; /* current age of this zone (minutes) */
room_vnum bot; /* starting room number for this zone */ room_vnum bot; /* starting room number for this zone */
@@ -228,7 +229,7 @@ struct help_index_element {
/* for the "buffered" rent and house object loading */ /* for the "buffered" rent and house object loading */
struct obj_save_data_t { struct obj_save_data_t {
obj_data *obj; struct obj_data *obj;
int locate; int locate;
struct obj_save_data_t *next; struct obj_save_data_t *next;
}; };
@@ -255,7 +256,7 @@ void free_text_files(void);
void free_help_table(void); void free_help_table(void);
void free_player_index(void); void free_player_index(void);
void load_help(FILE *fl, char *name); void load_help(FILE *fl, char *name);
void new_mobile_data(char_data *ch); void new_mobile_data(struct char_data *ch);
zone_rnum real_zone(zone_vnum vnum); zone_rnum real_zone(zone_vnum vnum);
room_rnum real_room(room_vnum vnum); room_rnum real_room(room_vnum vnum);
@@ -264,45 +265,45 @@ obj_rnum real_object(obj_vnum vnum);
/* Public Procedures from objsave.c */ /* Public Procedures from objsave.c */
void Crash_save_all(void); void Crash_save_all(void);
void Crash_idlesave(char_data *ch); void Crash_idlesave(struct char_data *ch);
void Crash_crashsave(char_data *ch); void Crash_crashsave(struct char_data *ch);
int Crash_load(char_data *ch); int Crash_load(struct char_data *ch);
void Crash_listrent(char_data *ch, char *name); void Crash_listrent(struct char_data *ch, char *name);
int Crash_clean_file(char *name); int Crash_clean_file(char *name);
int Crash_delete_crashfile(char_data *ch); int Crash_delete_crashfile(struct char_data *ch);
int Crash_delete_file(char *name); int Crash_delete_file(char *name);
void update_obj_file(void); void update_obj_file(void);
void Crash_rentsave(char_data *ch, int cost); void Crash_rentsave(struct char_data *ch, int cost);
obj_save_data *objsave_parse_objects(FILE *fl); obj_save_data *objsave_parse_objects(FILE *fl);
int objsave_save_obj_record(obj_data *obj, FILE *fl, int location); int objsave_save_obj_record(struct obj_data *obj, FILE *fl, int location);
/* Special functions */ /* Special functions */
SPECIAL(receptionist); SPECIAL(receptionist);
SPECIAL(cryogenicist); SPECIAL(cryogenicist);
/* Functions from players.c */ /* Functions from players.c */
void tag_argument(char *argument, char *tag); void tag_argument(char *argument, char *tag);
int load_char(const char *name, char_data *ch); int load_char(const char *name, struct char_data *ch);
void save_char(char_data *ch); void save_char(struct char_data *ch);
void init_char(char_data *ch); void init_char(struct char_data *ch);
char_data* create_char(void); struct char_data* create_char(void);
char_data *read_mobile(mob_vnum nr, int type); struct char_data *read_mobile(mob_vnum nr, int type);
int vnum_mobile(char *searchname, char_data *ch); int vnum_mobile(char *searchname, struct char_data *ch);
void clear_char(char_data *ch); void clear_char(struct char_data *ch);
void reset_char(char_data *ch); void reset_char(struct char_data *ch);
void free_char(char_data *ch); void free_char(struct char_data *ch);
void save_player_index(void); void save_player_index(void);
long get_ptable_by_name(const char *name); long get_ptable_by_name(const char *name);
void remove_player(int pfilepos); void remove_player(int pfilepos);
void clean_pfiles(void); void clean_pfiles(void);
void build_player_index(void); void build_player_index(void);
obj_data *create_obj(void); struct obj_data *create_obj(void);
void clear_object(obj_data *obj); void clear_object(struct obj_data *obj);
void free_obj(obj_data *obj); void free_obj(struct obj_data *obj);
obj_data *read_object(obj_vnum nr, int type); struct obj_data *read_object(obj_vnum nr, int type);
int vnum_object(char *searchname, char_data *ch); int vnum_object(char *searchname, struct char_data *ch);
int vnum_room(char *, char_data *); int vnum_room(char *, struct char_data *);
int vnum_trig(char *, char_data *); int vnum_trig(char *, struct char_data *);
void setup_dir(FILE *fl, int room, int dir); void setup_dir(FILE *fl, int room, int dir);
void index_boot(int mode); void index_boot(int mode);
@@ -365,15 +366,15 @@ extern room_rnum top_of_world;
extern struct zone_data *zone_table; extern struct zone_data *zone_table;
extern zone_rnum top_of_zone_table; extern zone_rnum top_of_zone_table;
extern char_data *character_list; extern struct char_data *character_list;
extern struct index_data *mob_index; extern struct index_data *mob_index;
extern char_data *mob_proto; extern struct char_data *mob_proto;
extern mob_rnum top_of_mobt; extern mob_rnum top_of_mobt;
extern struct index_data *obj_index; extern struct index_data *obj_index;
extern obj_data *object_list; extern struct obj_data *object_list;
extern obj_data *obj_proto; extern struct obj_data *obj_proto;
extern obj_rnum top_of_objt; extern obj_rnum top_of_objt;
extern struct social_messg *soc_mess_list; extern struct social_messg *soc_mess_list;

View File

@@ -188,7 +188,7 @@ void sub_write(char *arg, char_data *ch, byte find_invis, int targets)
void send_to_zone(char *messg, zone_rnum zone) void send_to_zone(char *messg, zone_rnum zone)
{ {
descriptor_data *i; struct descriptor_data *i;
if (!messg || !*messg) if (!messg || !*messg)
return; return;

View File

@@ -214,7 +214,7 @@ void dg_read_trigger(FILE *fp, void *proto, int type)
} }
} }
void dg_obj_trigger(char *line, obj_data *obj) void dg_obj_trigger(char *line, struct obj_data *obj)
{ {
char junk[8]; char junk[8];
int vnum, rnum, count; int vnum, rnum, count;
@@ -251,8 +251,8 @@ void dg_obj_trigger(char *line, obj_data *obj)
void assign_triggers(void *i, int type) void assign_triggers(void *i, int type)
{ {
char_data *mob = NULL; struct char_data *mob = NULL;
obj_data *obj = NULL; struct obj_data *obj = NULL;
struct room_data *room = NULL; struct room_data *room = NULL;
int rnum; int rnum;
struct trig_proto_list *trg_proto; struct trig_proto_list *trg_proto;

View File

@@ -119,12 +119,12 @@ void extract_script(void *thing, int type)
switch (type) { switch (type) {
case MOB_TRIGGER: case MOB_TRIGGER:
mob = (char_data *)thing; mob = (struct char_data *)thing;
sc = SCRIPT(mob); sc = SCRIPT(mob);
SCRIPT(mob) = NULL; SCRIPT(mob) = NULL;
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
obj = (obj_data *)thing; obj = (struct obj_data *)thing;
sc = SCRIPT(obj); sc = SCRIPT(obj);
SCRIPT(obj) = NULL; SCRIPT(obj) = NULL;
break; break;
@@ -137,8 +137,8 @@ void extract_script(void *thing, int type)
#if 1 /* debugging */ #if 1 /* debugging */
{ {
char_data *i = character_list; struct char_data *i = character_list;
obj_data *j = object_list; struct obj_data *j = object_list;
room_rnum k; room_rnum k;
if (sc) { if (sc) {
for ( ; i ; i = i->next) for ( ; i ; i = i->next)
@@ -185,12 +185,12 @@ void free_proto_script(void *thing, int type)
switch (type) { switch (type) {
case MOB_TRIGGER: case MOB_TRIGGER:
mob = (char_data *)thing; mob = (struct char_data *)thing;
proto = mob->proto_script; proto = mob->proto_script;
mob->proto_script = NULL; mob->proto_script = NULL;
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
obj = (obj_data *)thing; obj = (struct obj_data *)thing;
proto = obj->proto_script; proto = obj->proto_script;
obj->proto_script = NULL; obj->proto_script = NULL;
break; break;
@@ -202,8 +202,8 @@ void free_proto_script(void *thing, int type)
} }
#if 1 /* debugging */ #if 1 /* debugging */
{ {
char_data *i = character_list; struct char_data *i = character_list;
obj_data *j = object_list; struct obj_data *j = object_list;
room_rnum k; room_rnum k;
if (proto) { if (proto) {
for ( ; i ; i = i->next) for ( ; i ; i = i->next)

View File

@@ -35,9 +35,9 @@
* the spell is set to TAR_IGNORE. Also, group spells are not permitted. */ * the spell is set to TAR_IGNORE. Also, group spells are not permitted. */
void do_dg_cast(void *go, struct script_data *sc, trig_data *trig, int type, char *cmd) void do_dg_cast(void *go, struct script_data *sc, trig_data *trig, int type, char *cmd)
{ {
char_data *caster = NULL; struct char_data *caster = NULL;
char_data *tch = NULL; struct char_data *tch = NULL;
obj_data *tobj = NULL; struct obj_data *tobj = NULL;
struct room_data *caster_room = NULL; struct room_data *caster_room = NULL;
char *s, *t; char *s, *t;
int spellnum, target = 0; int spellnum, target = 0;
@@ -46,13 +46,13 @@ void do_dg_cast(void *go, struct script_data *sc, trig_data *trig, int type, cha
/* need to get the caster or the room of the temporary caster */ /* need to get the caster or the room of the temporary caster */
switch (type) { switch (type) {
case MOB_TRIGGER: case MOB_TRIGGER:
caster = (char_data *)go; caster = (struct char_data *)go;
break; break;
case WLD_TRIGGER: case WLD_TRIGGER:
caster_room = (struct room_data *)go; caster_room = (struct room_data *)go;
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
caster_room = dg_room_of_obj((obj_data *)go); caster_room = dg_room_of_obj((struct obj_data *)go);
if (!caster_room) { if (!caster_room) {
script_log("dg_do_cast: unknown room for object-caster!"); script_log("dg_do_cast: unknown room for object-caster!");
return; return;
@@ -131,7 +131,7 @@ void do_dg_cast(void *go, struct script_data *sc, trig_data *trig, int type, cha
/* set the caster's name to that of the object, or the gods.... */ /* set the caster's name to that of the object, or the gods.... */
if (type==OBJ_TRIGGER) if (type==OBJ_TRIGGER)
caster->player.short_descr = caster->player.short_descr =
strdup(((obj_data *)go)->short_description); strdup(((struct obj_data *)go)->short_description);
else if (type==WLD_TRIGGER) else if (type==WLD_TRIGGER)
caster->player.short_descr = strdup("The gods"); caster->player.short_descr = strdup("The gods");
caster->next_in_room = caster_room->people; caster->next_in_room = caster_room->people;
@@ -152,7 +152,7 @@ void do_dg_cast(void *go, struct script_data *sc, trig_data *trig, int type, cha
void do_dg_affect(void *go, struct script_data *sc, trig_data *trig, void do_dg_affect(void *go, struct script_data *sc, trig_data *trig,
int script_type, char *cmd) int script_type, char *cmd)
{ {
char_data *ch = NULL; struct char_data *ch = NULL;
int value=0, duration=0; int value=0, duration=0;
char junk[MAX_INPUT_LENGTH]; /* will be set to "dg_affect" */ char junk[MAX_INPUT_LENGTH]; /* will be set to "dg_affect" */
char charname[MAX_INPUT_LENGTH], property[MAX_INPUT_LENGTH]; char charname[MAX_INPUT_LENGTH], property[MAX_INPUT_LENGTH];
@@ -238,7 +238,7 @@ void do_dg_affect(void *go, struct script_data *sc, trig_data *trig,
affect_to_char(ch, &af); affect_to_char(ch, &af);
} }
void send_char_pos(char_data *ch, int dam) void send_char_pos(struct char_data *ch, int dam)
{ {
switch (GET_POS(ch)) { switch (GET_POS(ch)) {
case POS_MORTALLYW: case POS_MORTALLYW:
@@ -269,7 +269,7 @@ void send_char_pos(char_data *ch, int dam)
/* Used throughout the xxxcmds.c files for checking if a char can be targetted /* Used throughout the xxxcmds.c files for checking if a char can be targetted
* - allow_gods is false when called by %force%, for instance, while true for * - allow_gods is false when called by %force%, for instance, while true for
* %teleport%. - Welcor */ * %teleport%. - Welcor */
int valid_dg_target(char_data *ch, int bitvector) int valid_dg_target(struct char_data *ch, int bitvector)
{ {
if (IS_NPC(ch)) if (IS_NPC(ch))
return TRUE; /* all npcs are allowed as targets */ return TRUE; /* all npcs are allowed as targets */
@@ -286,7 +286,7 @@ int valid_dg_target(char_data *ch, int bitvector)
return FALSE; /* The rest are gods with nohassle on... */ return FALSE; /* The rest are gods with nohassle on... */
} }
void script_damage(char_data *vict, int dam) void script_damage(struct char_data *vict, int dam)
{ {
if (GET_LEVEL(vict)>=LVL_IMMORT && (dam > 0)) { if (GET_LEVEL(vict)>=LVL_IMMORT && (dam > 0)) {
send_to_char(vict, "Being the cool immortal you are, you sidestep a trap, " send_to_char(vict, "Being the cool immortal you are, you sidestep a trap, "

View File

@@ -320,7 +320,7 @@ ACMD(do_mzoneecho)
if (!*room_number || !*msg) if (!*room_number || !*msg)
mob_log(ch, "mzoneecho called with too few args"); mob_log(ch, "mzoneecho called with too few args");
else if ((zone = real_zone_by_thing(atoidx(room_number))) == NOWHERE) else if ((zone = real_zone_by_thing(atoi(room_number))) == NOWHERE)
mob_log(ch, "mzoneecho called for nonexistant zone"); mob_log(ch, "mzoneecho called for nonexistant zone");
else { else {
@@ -355,7 +355,7 @@ ACMD(do_mload)
target = two_arguments(argument, arg1, arg2); target = two_arguments(argument, arg1, arg2);
if (!*arg1 || !*arg2 || !is_number(arg2) || ((number = atoidx(arg2)) == NOBODY)) { if (!*arg1 || !*arg2 || !is_number(arg2) || ((number = atoi(arg2)) < 0)) {
mob_log(ch, "mload: bad syntax"); mob_log(ch, "mload: bad syntax");
return; return;
} }
@@ -366,7 +366,7 @@ ACMD(do_mload)
if (!target || !*target) { if (!target || !*target) {
rnum = IN_ROOM(ch); rnum = IN_ROOM(ch);
} else { } else {
if (!isdigit(*target) || (rnum = real_room(atoidx(target))) == NOWHERE) { if (!isdigit(*target) || (rnum = real_room(atoi(target))) == NOWHERE) {
mob_log(ch, "mload: room target vnum doesn't exist " mob_log(ch, "mload: room target vnum doesn't exist "
"(loading mob vnum %d to room %s)", number, target); "(loading mob vnum %d to room %s)", number, target);
return; return;
@@ -699,7 +699,7 @@ ACMD(do_mforce)
} }
if (!str_cmp(arg, "all")) { if (!str_cmp(arg, "all")) {
descriptor_data *i; struct descriptor_data *i;
char_data *vch; char_data *vch;
for (i = descriptor_list; i ; i = i->next) { for (i = descriptor_list; i ; i = i->next) {
@@ -914,10 +914,10 @@ ACMD(do_mtransform)
mob_log(ch, "mtransform: bad argument"); mob_log(ch, "mtransform: bad argument");
else { else {
if (isdigit(*arg)) if (isdigit(*arg))
m = read_mobile(atoidx(arg), VIRTUAL); m = read_mobile(atoi(arg), VIRTUAL);
else { else {
keep_hp = 0; keep_hp = 0;
m = read_mobile(atoidx(arg+1), VIRTUAL); m = read_mobile(atoi(arg+1), VIRTUAL);
} }
if (m==NULL) { if (m==NULL) {
mob_log(ch, "mtransform: bad mobile vnum"); mob_log(ch, "mtransform: bad mobile vnum");
@@ -1070,7 +1070,7 @@ ACMD(do_mdoor)
newexit->exit_info = (sh_int)asciiflag_conv(value); newexit->exit_info = (sh_int)asciiflag_conv(value);
break; break;
case 3: /* key */ case 3: /* key */
newexit->key = atoidx(value); newexit->key = atoi(value);
break; break;
case 4: /* name */ case 4: /* name */
if (newexit->keyword) if (newexit->keyword)
@@ -1079,7 +1079,7 @@ ACMD(do_mdoor)
strcpy(newexit->keyword, value); strcpy(newexit->keyword, value);
break; break;
case 5: /* room */ case 5: /* room */
if ((to_room = real_room(atoidx(value))) != NOWHERE) if ((to_room = real_room(atoi(value))) != NOWHERE)
newexit->to_room = to_room; newexit->to_room = to_room;
else else
mob_log(ch, "mdoor: invalid door target"); mob_log(ch, "mdoor: invalid door target");
@@ -1091,7 +1091,7 @@ ACMD(do_mdoor)
ACMD(do_mfollow) ACMD(do_mfollow)
{ {
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
char_data *leader; struct char_data *leader;
struct follow_type *j, *k; struct follow_type *j, *k;
if (!MOB_OR_IMPL(ch)) { if (!MOB_OR_IMPL(ch)) {
@@ -1176,5 +1176,5 @@ ACMD(do_mrecho)
if (!*msg || !*start || !*finish || !is_number(start) || !is_number(finish)) if (!*msg || !*start || !*finish || !is_number(start) || !is_number(finish))
mob_log(ch, "mrecho called with too few args"); mob_log(ch, "mrecho called with too few args");
else else
send_to_range(atoidx(start), atoidx(finish), "%s\r\n", msg); send_to_range(atoi(start), atoi(finish), "%s\r\n", msg);
} }

View File

@@ -88,7 +88,7 @@ room_rnum obj_room(obj_data *obj)
/* returns the real room number, or NOWHERE if not found or invalid */ /* returns the real room number, or NOWHERE if not found or invalid */
static room_rnum find_obj_target_room(obj_data *obj, char *rawroomstr) static room_rnum find_obj_target_room(obj_data *obj, char *rawroomstr)
{ {
room_vnum tmp; int tmp;
room_rnum location; room_rnum location;
char_data *target_mob; char_data *target_mob;
obj_data *target_obj; obj_data *target_obj;
@@ -101,7 +101,7 @@ static room_rnum find_obj_target_room(obj_data *obj, char *rawroomstr)
if (isdigit(*roomstr) && !strchr(roomstr, '.')) if (isdigit(*roomstr) && !strchr(roomstr, '.'))
{ {
tmp = atoidx(roomstr); tmp = atoi(roomstr);
if ((location = real_room(tmp)) == NOWHERE) if ((location = real_room(tmp)) == NOWHERE)
return NOWHERE; return NOWHERE;
} }
@@ -220,7 +220,7 @@ static OCMD(do_ozoneecho)
if (!*room_number || !*msg) if (!*room_number || !*msg)
obj_log(obj, "ozoneecho called with too few args"); obj_log(obj, "ozoneecho called with too few args");
else if ((zone = real_zone_by_thing(atoidx(room_number))) == NOWHERE) else if ((zone = real_zone_by_thing(atoi(room_number))) == NOWHERE)
obj_log(obj, "ozoneecho called for nonexistant zone"); obj_log(obj, "ozoneecho called for nonexistant zone");
else { else {
@@ -275,7 +275,7 @@ static OCMD(do_orecho)
if (!*msg || !*start || !*finish || !is_number(start) || !is_number(finish)) if (!*msg || !*start || !*finish || !is_number(start) || !is_number(finish))
obj_log(obj, "orecho: too few args"); obj_log(obj, "orecho: too few args");
else else
send_to_range(atoidx(start), atoidx(finish), "%s\r\n", msg); send_to_range(atoi(start), atoi(finish), "%s\r\n", msg);
} }
@@ -300,7 +300,7 @@ static OCMD(do_otransform)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
obj_data *o, tmpobj; obj_data *o, tmpobj;
char_data *wearer=NULL; struct char_data *wearer=NULL;
int pos = 0; int pos = 0;
one_argument(argument, arg); one_argument(argument, arg);
@@ -310,7 +310,7 @@ static OCMD(do_otransform)
else if (!isdigit(*arg)) else if (!isdigit(*arg))
obj_log(obj, "otransform: bad argument"); obj_log(obj, "otransform: bad argument");
else { else {
o = read_object(atoidx(arg), VIRTUAL); o = read_object(atoi(arg), VIRTUAL);
if (o==NULL) { if (o==NULL) {
obj_log(obj, "otransform: bad object vnum"); obj_log(obj, "otransform: bad object vnum");
return; return;
@@ -459,7 +459,7 @@ static OCMD(do_dgoload)
target = two_arguments(argument, arg1, arg2); target = two_arguments(argument, arg1, arg2);
if (!*arg1 || !*arg2 || !is_number(arg2) || ((number = atoidx(arg2)) == NOTHING)) if (!*arg1 || !*arg2 || !is_number(arg2) || ((number = atoi(arg2)) < 0))
{ {
obj_log(obj, "oload: bad syntax"); obj_log(obj, "oload: bad syntax");
return; return;
@@ -477,7 +477,7 @@ static OCMD(do_dgoload)
if (!target || !*target) { if (!target || !*target) {
rnum = room; rnum = room;
} else { } else {
if (!isdigit(*target) || (rnum = real_room(atoidx(target))) == NOWHERE) { if (!isdigit(*target) || (rnum = real_room(atoi(target))) == NOWHERE) {
obj_log(obj, "oload: room target vnum doesn't exist " obj_log(obj, "oload: room target vnum doesn't exist "
"(loading mob vnum %d to room %s)", number, target); "(loading mob vnum %d to room %s)", number, target);
return; return;
@@ -671,7 +671,7 @@ static OCMD(do_odoor)
newexit->exit_info = (sh_int)asciiflag_conv(value); newexit->exit_info = (sh_int)asciiflag_conv(value);
break; break;
case 3: /* key */ case 3: /* key */
newexit->key = atoidx(value); newexit->key = atoi(value);
break; break;
case 4: /* name */ case 4: /* name */
if (newexit->keyword) if (newexit->keyword)
@@ -680,7 +680,7 @@ static OCMD(do_odoor)
strcpy(newexit->keyword, value); strcpy(newexit->keyword, value);
break; break;
case 5: /* room */ case 5: /* room */
if ((to_room = real_room(atoidx(value))) != NOWHERE) if ((to_room = real_room(atoi(value))) != NOWHERE)
newexit->to_room = to_room; newexit->to_room = to_room;
else else
obj_log(obj, "odoor: invalid door target"); obj_log(obj, "odoor: invalid door target");
@@ -693,7 +693,7 @@ static OCMD(do_osetval)
{ {
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH];
int position, new_value, worn_on; int position, new_value, worn_on;
char_data *worn_by = NULL; struct char_data *worn_by = NULL;
two_arguments(argument, arg1, arg2); two_arguments(argument, arg1, arg2);
if (!*arg1 || !*arg2 || !is_number(arg1) || !is_number(arg2)) { if (!*arg1 || !*arg2 || !is_number(arg1) || !is_number(arg2)) {
@@ -725,8 +725,8 @@ static OCMD(do_osetval)
static OCMD(do_oat) static OCMD(do_oat)
{ {
room_rnum loc = NOWHERE; room_rnum loc = NOWHERE;
char_data *ch; struct char_data *ch;
obj_data *object; struct obj_data *object;
char arg[MAX_INPUT_LENGTH], *command; char arg[MAX_INPUT_LENGTH], *command;
command = any_one_arg(argument, arg); command = any_one_arg(argument, arg);
@@ -743,7 +743,7 @@ static OCMD(do_oat)
return; return;
} }
if (isdigit(*arg)) loc = real_room(atoidx(arg)); if (isdigit(*arg)) loc = real_room(atoi(arg));
else if ((ch = get_char_by_obj(obj, arg))) loc = IN_ROOM(ch); else if ((ch = get_char_by_obj(obj, arg))) loc = IN_ROOM(ch);
if (loc == NOWHERE) { if (loc == NOWHERE) {

View File

@@ -24,17 +24,17 @@
/* local functions */ /* local functions */
static void trigedit_disp_menu(descriptor_data *d); static void trigedit_disp_menu(struct descriptor_data *d);
static void trigedit_disp_types(descriptor_data *d); static void trigedit_disp_types(struct descriptor_data *d);
static void trigedit_create_index(int znum, char *type); static void trigedit_create_index(int znum, char *type);
static void trigedit_setup_new(descriptor_data *d); static void trigedit_setup_new(struct descriptor_data *d);
/* Trigedit */ /* Trigedit */
ACMD(do_oasis_trigedit) ACMD(do_oasis_trigedit)
{ {
int number, real_num; int number, real_num;
descriptor_data *d; struct descriptor_data *d;
/* No building as a mob or while being forced. */ /* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING) if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
@@ -115,9 +115,9 @@ void script_save_to_disk(FILE *fp, void *item, int type)
struct trig_proto_list *t; struct trig_proto_list *t;
if (type==MOB_TRIGGER) if (type==MOB_TRIGGER)
t = ((char_data *)item)->proto_script; t = ((struct char_data *)item)->proto_script;
else if (type==OBJ_TRIGGER) else if (type==OBJ_TRIGGER)
t = ((obj_data *)item)->proto_script; t = ((struct obj_data *)item)->proto_script;
else if (type==WLD_TRIGGER) else if (type==WLD_TRIGGER)
t = ((struct room_data *)item)->proto_script; t = ((struct room_data *)item)->proto_script;
else { else {
@@ -132,7 +132,7 @@ void script_save_to_disk(FILE *fp, void *item, int type)
} }
} }
static void trigedit_setup_new(descriptor_data *d) static void trigedit_setup_new(struct descriptor_data *d)
{ {
struct trig_data *trig; struct trig_data *trig;
@@ -155,7 +155,7 @@ static void trigedit_setup_new(descriptor_data *d)
OLC_VAL(d) = 0; /* Has changed flag. (It hasn't so far, we just made it.) */ OLC_VAL(d) = 0; /* Has changed flag. (It hasn't so far, we just made it.) */
} }
void trigedit_setup_existing(descriptor_data *d, int rtrg_num) void trigedit_setup_existing(struct descriptor_data *d, int rtrg_num)
{ {
struct trig_data *trig; struct trig_data *trig;
struct cmdlist_element *c; struct cmdlist_element *c;
@@ -182,7 +182,7 @@ void trigedit_setup_existing(descriptor_data *d, int rtrg_num)
OLC_VAL(d) = 0; /* Has changed flag. (It hasn't so far, we just made it.) */ OLC_VAL(d) = 0; /* Has changed flag. (It hasn't so far, we just made it.) */
} }
static void trigedit_disp_menu(descriptor_data *d) static void trigedit_disp_menu(struct descriptor_data *d)
{ {
struct trig_data *trig = OLC_TRIG(d); struct trig_data *trig = OLC_TRIG(d);
char *attach_type; char *attach_type;
@@ -227,7 +227,7 @@ static void trigedit_disp_menu(descriptor_data *d)
OLC_MODE(d) = TRIGEDIT_MAIN_MENU; OLC_MODE(d) = TRIGEDIT_MAIN_MENU;
} }
static void trigedit_disp_types(descriptor_data *d) static void trigedit_disp_types(struct descriptor_data *d)
{ {
int i, columns = 0; int i, columns = 0;
const char **types; const char **types;
@@ -420,7 +420,7 @@ static const char *command_color_replacement[COMMAND_TERMS][2] =
}; };
static void script_syntax_highlighting(descriptor_data *d, char *string) static void script_syntax_highlighting(struct descriptor_data *d, char *string)
{ {
ACMD(do_action); ACMD(do_action);
char buffer[MAX_STRING_LENGTH] = ""; char buffer[MAX_STRING_LENGTH] = "";
@@ -484,7 +484,7 @@ static void script_syntax_highlighting(descriptor_data *d, char *string)
} }
/****************************************************************************************/ /****************************************************************************************/
void trigedit_parse(descriptor_data *d, char *arg) void trigedit_parse(struct descriptor_data *d, char *arg)
{ {
int i = 0; int i = 0;
@@ -602,7 +602,7 @@ void trigedit_parse(descriptor_data *d, char *arg)
return; return;
case TRIGEDIT_COPY: case TRIGEDIT_COPY:
if ((i = real_trigger(atoidx(arg))) != NOWHERE) { if ((i = real_trigger(atoi(arg))) != NOWHERE) {
trigedit_setup_existing(d, i); trigedit_setup_existing(d, i);
} else } else
write_to_output(d, "That trigger does not exist.\r\n"); write_to_output(d, "That trigger does not exist.\r\n");
@@ -618,7 +618,7 @@ void trigedit_parse(descriptor_data *d, char *arg)
} }
/* save the zone's triggers to internal memory and to disk */ /* save the zone's triggers to internal memory and to disk */
void trigedit_save(descriptor_data *d) void trigedit_save(struct descriptor_data *d)
{ {
int i; int i;
trig_rnum rnum; trig_rnum rnum;
@@ -629,7 +629,7 @@ void trigedit_save(descriptor_data *d)
trig_data *live_trig; trig_data *live_trig;
struct cmdlist_element *cmd, *next_cmd; struct cmdlist_element *cmd, *next_cmd;
struct index_data **new_index; struct index_data **new_index;
descriptor_data *dsc; struct descriptor_data *dsc;
FILE *trig_file; FILE *trig_file;
int zone, top; int zone, top;
char buf[MAX_CMD_LENGTH]; char buf[MAX_CMD_LENGTH];
@@ -911,7 +911,7 @@ static void trigedit_create_index(int znum, char *type)
rename(new_name, old_name); rename(new_name, old_name);
} }
void dg_olc_script_copy(descriptor_data *d) void dg_olc_script_copy(struct descriptor_data *d)
{ {
struct trig_proto_list *origscript, *editscript; struct trig_proto_list *origscript, *editscript;
@@ -936,7 +936,7 @@ void dg_olc_script_copy(descriptor_data *d)
OLC_SCRIPT(d) = NULL; OLC_SCRIPT(d) = NULL;
} }
void dg_script_menu(descriptor_data *d) void dg_script_menu(struct descriptor_data *d)
{ {
struct trig_proto_list *editscript; struct trig_proto_list *editscript;
int i = 0; int i = 0;
@@ -972,7 +972,7 @@ void dg_script_menu(descriptor_data *d)
grn, nrm, grn, nrm, grn, nrm); grn, nrm, grn, nrm, grn, nrm);
} }
int dg_script_edit_parse(descriptor_data *d, char *arg) int dg_script_edit_parse(struct descriptor_data *d, char *arg)
{ {
struct trig_proto_list *trig, *currtrig; struct trig_proto_list *trig, *currtrig;
int count, pos, vnum; int count, pos, vnum;
@@ -1077,7 +1077,7 @@ int dg_script_edit_parse(descriptor_data *d, char *arg)
return 1; return 1;
} }
void trigedit_string_cleanup(descriptor_data *d, int terminator) void trigedit_string_cleanup(struct descriptor_data *d, int terminator)
{ {
switch (OLC_MODE(d)) { switch (OLC_MODE(d)) {
case TRIGEDIT_COMMANDS: case TRIGEDIT_COMMANDS:
@@ -1086,7 +1086,7 @@ void trigedit_string_cleanup(descriptor_data *d, int terminator)
} }
} }
int format_script(descriptor_data *d) int format_script(struct descriptor_data *d)
{ {
char nsc[MAX_CMD_LENGTH], *t, line[READ_SIZE]; char nsc[MAX_CMD_LENGTH], *t, line[READ_SIZE];
char *sc; char *sc;

View File

@@ -41,9 +41,9 @@
/* prototype exported functions from dg_olc.c */ /* prototype exported functions from dg_olc.c */
void script_save_to_disk(FILE *fp, void *item, int type); void script_save_to_disk(FILE *fp, void *item, int type);
void dg_olc_script_copy(descriptor_data *d); void dg_olc_script_copy(struct descriptor_data *d);
void dg_script_menu(descriptor_data *d); void dg_script_menu(struct descriptor_data *d);
int dg_script_edit_parse(descriptor_data *d, char *arg); int dg_script_edit_parse(struct descriptor_data *d, char *arg);
#endif /* _DG_OLC_H_ */ #endif /* _DG_OLC_H_ */

View File

@@ -35,7 +35,7 @@
/* Local functions not used elsewhere */ /* Local functions not used elsewhere */
static obj_data *find_obj(long n); static obj_data *find_obj(long n);
static room_data *find_room(long n); static room_data *find_room(long n);
static void do_stat_trigger(char_data *ch, trig_data *trig); static void do_stat_trigger(struct char_data *ch, trig_data *trig);
static void script_stat(char_data *ch, struct script_data *sc); static void script_stat(char_data *ch, struct script_data *sc);
static int remove_trigger(struct script_data *sc, char *name); static int remove_trigger(struct script_data *sc, char *name);
static int is_num(char *arg); static int is_num(char *arg);
@@ -71,8 +71,8 @@ static void dg_letter_value(struct script_data *sc, trig_data *trig, char *cmd);
static struct cmdlist_element * find_case(struct trig_data *trig, struct cmdlist_element *cl, static struct cmdlist_element * find_case(struct trig_data *trig, struct cmdlist_element *cl,
void *go, struct script_data *sc, int type, char *cond); void *go, struct script_data *sc, int type, char *cond);
static struct cmdlist_element *find_done(struct cmdlist_element *cl); static struct cmdlist_element *find_done(struct cmdlist_element *cl);
static char_data *find_char_by_uid_in_lookup_table(long uid); static struct char_data *find_char_by_uid_in_lookup_table(long uid);
static obj_data *find_obj_by_uid_in_lookup_table(long uid); static struct obj_data *find_obj_by_uid_in_lookup_table(long uid);
static EVENTFUNC(trig_wait_event); static EVENTFUNC(trig_wait_event);
@@ -186,7 +186,7 @@ obj_data *get_object_in_equip(char_data * ch, char *name)
if (id == obj->script_id) if (id == obj->script_id)
return (obj); return (obj);
} else if (is_number(name)) { } else if (is_number(name)) {
obj_vnum ovnum = atoidx(name); obj_vnum ovnum = atoi(name);
for (j = 0; j < NUM_WEARS; j++) for (j = 0; j < NUM_WEARS; j++)
if ((obj = GET_EQ(ch, j))) if ((obj = GET_EQ(ch, j)))
if (GET_OBJ_VNUM(obj) == ovnum) if (GET_OBJ_VNUM(obj) == ovnum)
@@ -258,7 +258,7 @@ int find_eq_pos_script(char *arg)
* @param pos The defined wear location to check. * @param pos The defined wear location to check.
* @retval int TRUE if obj can be worn on pos, FALSE if not. * @retval int TRUE if obj can be worn on pos, FALSE if not.
*/ */
int can_wear_on_pos(obj_data *obj, int pos) int can_wear_on_pos(struct obj_data *obj, int pos)
{ {
switch (pos) { switch (pos) {
case WEAR_HOLD: case WEAR_HOLD:
@@ -288,7 +288,7 @@ int can_wear_on_pos(obj_data *obj, int pos)
* @retval char_data * Pointer to the character structure if it exists, or NULL * @retval char_data * Pointer to the character structure if it exists, or NULL
* if it cannot be found. * if it cannot be found.
*/ */
char_data *find_char(long n) struct char_data *find_char(long n)
{ {
if (n>=ROOM_ID_BASE) /* See note in dg_scripts.h */ if (n>=ROOM_ID_BASE) /* See note in dg_scripts.h */
return NULL; return NULL;
@@ -486,7 +486,7 @@ room_data *get_room(char *name)
if (*name == UID_CHAR) if (*name == UID_CHAR)
return find_room(atoi(name + 1)); return find_room(atoi(name + 1));
else if ((nr = real_room(atoidx(name))) == NOWHERE) else if ((nr = real_room(atoi(name))) == NOWHERE)
return NULL; return NULL;
else else
return &world[nr]; return &world[nr];
@@ -722,14 +722,14 @@ static EVENTFUNC(trig_wait_event)
{ {
int found = FALSE; int found = FALSE;
if (type == MOB_TRIGGER) { if (type == MOB_TRIGGER) {
char_data *tch; struct char_data *tch;
for (tch = character_list;tch && !found;tch = tch->next) for (tch = character_list;tch && !found;tch = tch->next)
if (tch == (char_data *)go) if (tch == (struct char_data *)go)
found = TRUE; found = TRUE;
} else if (type == OBJ_TRIGGER) { } else if (type == OBJ_TRIGGER) {
obj_data *obj; struct obj_data *obj;
for (obj = object_list;obj && !found;obj = obj->next) for (obj = object_list;obj && !found;obj = obj->next)
if (obj == (obj_data *)go) if (obj == (struct obj_data *)go)
found = TRUE; found = TRUE;
} else { } else {
room_rnum i; room_rnum i;
@@ -753,7 +753,7 @@ static EVENTFUNC(trig_wait_event)
return 0; return 0;
} }
static void do_stat_trigger(char_data *ch, trig_data *trig) static void do_stat_trigger(struct char_data *ch, trig_data *trig)
{ {
struct cmdlist_element *cmd_list; struct cmdlist_element *cmd_list;
char sb[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH]; char sb[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH];
@@ -878,7 +878,7 @@ static void script_stat (char_data *ch, struct script_data *sc)
} }
} }
void do_sstat_room(char_data * ch, struct room_data *rm) void do_sstat_room(struct char_data * ch, struct room_data *rm)
{ {
send_to_char(ch, "Triggers:\r\n"); send_to_char(ch, "Triggers:\r\n");
if (!SCRIPT(rm)) { if (!SCRIPT(rm)) {
@@ -944,11 +944,8 @@ ACMD(do_attach)
trig_data *trig; trig_data *trig;
char targ_name[MAX_INPUT_LENGTH], trig_name[MAX_INPUT_LENGTH]; char targ_name[MAX_INPUT_LENGTH], trig_name[MAX_INPUT_LENGTH];
char loc_name[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; char loc_name[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH];
int loc; int loc, tn, rn, num_arg;
trig_rnum rn;
room_rnum rnum; room_rnum rnum;
IDXTYPE num_arg;
trig_vnum tn;
argument = two_arguments(argument, arg, trig_name); argument = two_arguments(argument, arg, trig_name);
two_arguments(argument, targ_name, loc_name); two_arguments(argument, targ_name, loc_name);
@@ -958,8 +955,8 @@ ACMD(do_attach)
return; return;
} }
num_arg = atoidx(targ_name); num_arg = atoi(targ_name);
tn = atoidx(trig_name); tn = atoi(trig_name);
loc = (*loc_name) ? atoi(loc_name) : -1; loc = (*loc_name) ? atoi(loc_name) : -1;
if (is_abbrev(arg, "mobile") || is_abbrev(arg, "mtr")) { if (is_abbrev(arg, "mobile") || is_abbrev(arg, "mtr")) {
@@ -1150,15 +1147,13 @@ ACMD(do_detach)
struct room_data *room; struct room_data *room;
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH], arg3[MAX_INPUT_LENGTH], *snum; char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH], arg3[MAX_INPUT_LENGTH], *snum;
char *trigger = 0; char *trigger = 0;
IDXTYPE num_arg; int num_arg, tn, rn;
trig_vnum tn;
trig_rnum rn;
room_rnum rnum; room_rnum rnum;
trig_data *trig; trig_data *trig;
argument = two_arguments(argument, arg1, arg2); argument = two_arguments(argument, arg1, arg2);
one_argument(argument, arg3); one_argument(argument, arg3);
tn = atoidx(arg3); tn = atoi(arg3);
rn = real_trigger(tn); rn = real_trigger(tn);
trig = read_trigger(rn); trig = read_trigger(rn);
@@ -1169,7 +1164,7 @@ ACMD(do_detach)
} }
/* vnum of mob/obj, if given */ /* vnum of mob/obj, if given */
num_arg = atoidx(arg2); num_arg = atoi(arg2);
if (!str_cmp(arg1, "room") || !str_cmp(arg1, "wtr")) { if (!str_cmp(arg1, "room") || !str_cmp(arg1, "wtr")) {
if (!*arg3 || (strchr(arg2, '.'))) if (!*arg3 || (strchr(arg2, '.')))
@@ -1326,7 +1321,7 @@ ACMD(do_detach)
void script_vlog(const char *format, va_list args) void script_vlog(const char *format, va_list args)
{ {
char output[MAX_STRING_LENGTH]; char output[MAX_STRING_LENGTH];
descriptor_data *i; struct descriptor_data *i;
/* parse the args, making the error message */ /* parse the args, making the error message */
vsnprintf(output, sizeof(output) - 2, format, args); vsnprintf(output, sizeof(output) - 2, format, args);
@@ -1798,8 +1793,7 @@ static void process_attach(void *go, struct script_data *sc, trig_data *trig,
char_data *c=NULL; char_data *c=NULL;
obj_data *o=NULL; obj_data *o=NULL;
room_data *r=NULL; room_data *r=NULL;
long id; long trignum, id;
trig_rnum trignum;
id_p = two_arguments(cmd, arg, trignum_s); id_p = two_arguments(cmd, arg, trignum_s);
skip_spaces(&id_p); skip_spaces(&id_p);
@@ -1837,7 +1831,7 @@ static void process_attach(void *go, struct script_data *sc, trig_data *trig,
} }
/* locate and load the trigger specified */ /* locate and load the trigger specified */
trignum = real_trigger(atoidx(trignum_s)); trignum = real_trigger(atoi(trignum_s));
if (trignum == NOTHING || !(newtrig=read_trigger(trignum))) { if (trignum == NOTHING || !(newtrig=read_trigger(trignum))) {
script_log("Trigger: %s, VNum %d. attach invalid trigger: '%s'", script_log("Trigger: %s, VNum %d. attach invalid trigger: '%s'",
GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig), trignum_s); GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig), trignum_s);
@@ -1959,7 +1953,7 @@ static void process_detach(void *go, struct script_data *sc, trig_data *trig,
} }
struct room_data *dg_room_of_obj(obj_data *obj) struct room_data *dg_room_of_obj(struct obj_data *obj)
{ {
if (IN_ROOM(obj) != NOWHERE) return &world[IN_ROOM(obj)]; if (IN_ROOM(obj) != NOWHERE) return &world[IN_ROOM(obj)];
if (obj->carried_by) return &world[IN_ROOM(obj->carried_by)]; if (obj->carried_by) return &world[IN_ROOM(obj->carried_by)];
@@ -2008,34 +2002,34 @@ static void makeuid_var(void *go, struct script_data *sc, trig_data *trig,
} }
if (is_abbrev(arg, "mob")) { if (is_abbrev(arg, "mob")) {
char_data *c = NULL; struct char_data *c = NULL;
switch (type) { switch (type) {
case WLD_TRIGGER: case WLD_TRIGGER:
c = get_char_in_room((struct room_data *)go, name); c = get_char_in_room((struct room_data *)go, name);
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
c = get_char_near_obj((obj_data *)go, name); c = get_char_near_obj((struct obj_data *)go, name);
break; break;
case MOB_TRIGGER: case MOB_TRIGGER:
c = get_char_room_vis((char_data *)go, name, NULL); c = get_char_room_vis((struct char_data *)go, name, NULL);
break; break;
} }
if (c) if (c)
snprintf(uid, sizeof(uid), "%c%ld", UID_CHAR, char_script_id(c)); snprintf(uid, sizeof(uid), "%c%ld", UID_CHAR, char_script_id(c));
} else if (is_abbrev(arg, "obj")) { } else if (is_abbrev(arg, "obj")) {
obj_data *o = NULL; struct obj_data *o = NULL;
switch (type) { switch (type) {
case WLD_TRIGGER: case WLD_TRIGGER:
o = get_obj_in_room((struct room_data *)go, name); o = get_obj_in_room((struct room_data *)go, name);
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
o = get_obj_near_obj((obj_data *)go, name); o = get_obj_near_obj((struct obj_data *)go, name);
break; break;
case MOB_TRIGGER: case MOB_TRIGGER:
if ((o = get_obj_in_list_vis((char_data *)go, name, NULL, if ((o = get_obj_in_list_vis((struct char_data *)go, name, NULL,
((char_data *)go)->carrying)) == NULL) ((struct char_data *)go)->carrying)) == NULL)
o = get_obj_in_list_vis((char_data *)go, name, NULL, o = get_obj_in_list_vis((struct char_data *)go, name, NULL,
world[IN_ROOM((char_data *)go)].contents); world[IN_ROOM((struct char_data *)go)].contents);
break; break;
} }
if (o) if (o)
@@ -2047,10 +2041,10 @@ static void makeuid_var(void *go, struct script_data *sc, trig_data *trig,
r = real_room(((struct room_data *) go)->number); r = real_room(((struct room_data *) go)->number);
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
r = obj_room((obj_data *)go); r = obj_room((struct obj_data *)go);
break; break;
case MOB_TRIGGER: case MOB_TRIGGER:
r = IN_ROOM((char_data *)go); r = IN_ROOM((struct char_data *)go);
break; break;
} }
if (r != NOWHERE) if (r != NOWHERE)
@@ -2267,7 +2261,7 @@ ACMD(do_vdelete)
/* Called from do_set - return 0 for failure, 1 for success. ch and vict are /* Called from do_set - return 0 for failure, 1 for success. ch and vict are
* verified. */ * verified. */
int perform_set_dg_var(char_data *ch, char_data *vict, char *val_arg) int perform_set_dg_var(struct char_data *ch, struct char_data *vict, char *val_arg)
{ {
char var_name[MAX_INPUT_LENGTH], *var_value; char var_name[MAX_INPUT_LENGTH], *var_value;
@@ -2731,7 +2725,7 @@ trig_rnum real_trigger(trig_vnum vnum)
bot = 0; bot = 0;
top = top_of_trigt - 1; top = top_of_trigt - 1;
if (vnum == NOTHING || !top_of_trigt || trig_index[bot]->vnum > vnum || trig_index[top]->vnum < vnum) if (!top_of_trigt || trig_index[bot]->vnum > vnum || trig_index[top]->vnum < vnum)
return (NOTHING); return (NOTHING);
/* perform binary search on trigger-table */ /* perform binary search on trigger-table */
@@ -2755,7 +2749,7 @@ ACMD(do_tstat)
half_chop(argument, str, argument); half_chop(argument, str, argument);
if (*str) { if (*str) {
rnum = real_trigger(atoidx(str)); rnum = real_trigger(atoi(str));
if (rnum == NOTHING) { if (rnum == NOTHING) {
send_to_char(ch, "That vnum does not exist.\r\n"); send_to_char(ch, "That vnum does not exist.\r\n");
return; return;
@@ -2827,7 +2821,7 @@ static struct cmdlist_element *find_done(struct cmdlist_element *cl)
/* load in a character's saved variables */ /* load in a character's saved variables */
void read_saved_vars(char_data *ch) void read_saved_vars(struct char_data *ch)
{ {
FILE *file; FILE *file;
long context; long context;
@@ -2874,7 +2868,7 @@ void read_saved_vars(char_data *ch)
} }
/* save a characters variables out to disk */ /* save a characters variables out to disk */
void save_char_vars(char_data *ch) void save_char_vars(struct char_data *ch)
{ {
FILE *file; FILE *file;
char fn[127]; char fn[127];
@@ -2913,7 +2907,7 @@ void save_char_vars(char_data *ch)
} }
/* load in a character's saved variables from an ASCII pfile*/ /* load in a character's saved variables from an ASCII pfile*/
void read_saved_vars_ascii(FILE *file, char_data *ch, int count) void read_saved_vars_ascii(FILE *file, struct char_data *ch, int count)
{ {
long context; long context;
char input_line[1024], *temp, *p; char input_line[1024], *temp, *p;
@@ -2948,7 +2942,7 @@ void read_saved_vars_ascii(FILE *file, char_data *ch, int count)
} }
/* save a characters variables out to an ASCII pfile */ /* save a characters variables out to an ASCII pfile */
void save_char_vars_ascii(FILE *file, char_data *ch) void save_char_vars_ascii(FILE *file, struct char_data *ch)
{ {
struct trig_var_data *vars; struct trig_var_data *vars;
int count = 0; int count = 0;
@@ -3014,23 +3008,23 @@ static inline struct lookup_table_t *find_element_by_uid_in_lookup_table(long ui
return lt; return lt;
} }
static char_data *find_char_by_uid_in_lookup_table(long uid) static struct char_data *find_char_by_uid_in_lookup_table(long uid)
{ {
struct lookup_table_t *lt = find_element_by_uid_in_lookup_table(uid); struct lookup_table_t *lt = find_element_by_uid_in_lookup_table(uid);
if (lt) if (lt)
return (char_data *)(lt->c); return (struct char_data *)(lt->c);
log("find_char_by_uid_in_lookup_table : No entity with number %ld in lookup table", uid); log("find_char_by_uid_in_lookup_table : No entity with number %ld in lookup table", uid);
return NULL; return NULL;
} }
static obj_data *find_obj_by_uid_in_lookup_table(long uid) static struct obj_data *find_obj_by_uid_in_lookup_table(long uid)
{ {
struct lookup_table_t *lt = find_element_by_uid_in_lookup_table(uid); struct lookup_table_t *lt = find_element_by_uid_in_lookup_table(uid);
if (lt) if (lt)
return (obj_data *)(lt->c); return (struct obj_data *)(lt->c);
log("find_obj_by_uid_in_lookup_table : No entity with number %ld in lookup table", uid); log("find_obj_by_uid_in_lookup_table : No entity with number %ld in lookup table", uid);
return NULL; return NULL;
@@ -3102,7 +3096,7 @@ bool check_flags_by_name_ar(int *array, int numflags, char *search, const char *
return FALSE; return FALSE;
} }
int trig_is_attached(struct script_data *sc, trig_vnum trig_num) int trig_is_attached(struct script_data *sc, int trig_num)
{ {
trig_data *t; trig_data *t;

View File

@@ -16,7 +16,6 @@
#define _DG_SCRIPTS_H_ #define _DG_SCRIPTS_H_
#include "utils.h" /* To make sure ACMD is defined */ #include "utils.h" /* To make sure ACMD is defined */
#include "structs.h" /* To make sure we have access to typedefs */
#define MOB_TRIGGER 0 #define MOB_TRIGGER 0
#define OBJ_TRIGGER 1 #define OBJ_TRIGGER 1
@@ -127,7 +126,8 @@
* same time. */ * same time. */
#define PULSE_DG_SCRIPT (13 RL_SEC) #define PULSE_DG_SCRIPT (13 RL_SEC)
#define MAX_SCRIPT_DEPTH 10 /* maximum depth triggers can recurse into each other */ #define MAX_SCRIPT_DEPTH 10 /* maximum depth triggers can
recurse into each other */
#define SCRIPT_ERROR_CODE -9999999 /* this shouldn't happen too often */ #define SCRIPT_ERROR_CODE -9999999 /* this shouldn't happen too often */
@@ -193,13 +193,21 @@ struct script_memory {
struct script_memory *next; struct script_memory *next;
}; };
/* typedefs that the dg functions rely on */
typedef struct index_data index_data;
typedef struct room_data room_data;
typedef struct obj_data obj_data;
typedef struct trig_data trig_data;
typedef struct char_data char_data;
/* function prototypes from dg_triggers.c */ /* function prototypes from dg_triggers.c */
char *one_phrase(char *arg, char *first_arg); char *one_phrase(char *arg, char *first_arg);
int is_substring(char *sub, char *string); int is_substring(char *sub, char *string);
int word_check(char *str, char *wordlist); int word_check(char *str, char *wordlist);
void act_mtrigger(const char_data *ch, char *str, char_data *actor, char_data *victim, obj_data *object, void act_mtrigger(const char_data *ch, char *str,
obj_data *target, char *arg); char_data *actor, char_data *victim, obj_data *object, obj_data *target, char *arg);
void speech_mtrigger(char_data *actor, char *str); void speech_mtrigger(char_data *actor, char *str);
void speech_wtrigger(char_data *actor, char *str); void speech_wtrigger(char_data *actor, char *str);
void greet_memory_mtrigger(char_data *ch); void greet_memory_mtrigger(char_data *ch);
@@ -211,13 +219,17 @@ int drop_otrigger(obj_data *obj, char_data *actor);
void timer_otrigger(obj_data *obj); void timer_otrigger(obj_data *obj);
int get_otrigger(obj_data *obj, char_data *actor); int get_otrigger(obj_data *obj, char_data *actor);
int drop_wtrigger(obj_data *obj, char_data *actor); int drop_wtrigger(obj_data *obj, char_data *actor);
int give_otrigger(obj_data *obj, char_data *actor, char_data *victim); int give_otrigger(obj_data *obj, char_data *actor,
int receive_mtrigger(char_data *ch, char_data *actor, obj_data *obj); char_data *victim);
void bribe_mtrigger(char_data *ch, char_data *actor, int amount); int receive_mtrigger(char_data *ch, char_data *actor,
obj_data *obj);
void bribe_mtrigger(char_data *ch, char_data *actor,
int amount);
int wear_otrigger(obj_data *obj, char_data *actor, int where); int wear_otrigger(obj_data *obj, char_data *actor, int where);
int remove_otrigger(obj_data *obj, char_data *actor); int remove_otrigger(obj_data *obj, char_data *actor);
int cmd_otrig(obj_data *obj, char_data *actor, char *cmd, char *argument, int type); int cmd_otrig(obj_data *obj, char_data *actor, char *cmd,
char *argument, int type);
int command_mtrigger(char_data *actor, char *cmd, char *argument); int command_mtrigger(char_data *actor, char *cmd, char *argument);
int command_otrigger(char_data *actor, char *cmd, char *argument); int command_otrigger(char_data *actor, char *cmd, char *argument);
int command_wtrigger(char_data *actor, char *cmd, char *argument); int command_wtrigger(char_data *actor, char *cmd, char *argument);
@@ -261,8 +273,8 @@ ACMD(do_vdelete);
ACMD(do_tstat); ACMD(do_tstat);
char *str_str(char *cs, char *ct); char *str_str(char *cs, char *ct);
int find_eq_pos_script(char *arg); int find_eq_pos_script(char *arg);
int can_wear_on_pos(obj_data *obj, int pos); int can_wear_on_pos(struct obj_data *obj, int pos);
char_data *find_char(long n); struct char_data *find_char(long n);
char_data *get_char(char *name); char_data *get_char(char *name);
char_data *get_char_near_obj(obj_data *obj, char *name); char_data *get_char_near_obj(obj_data *obj, char *name);
char_data *get_char_in_room(room_data *room, char *name); char_data *get_char_in_room(room_data *room, char *name);
@@ -280,27 +292,28 @@ obj_data *get_object_in_equip(char_data * ch, char *name);
void script_trigger_check(void); void script_trigger_check(void);
void check_time_triggers(void); void check_time_triggers(void);
void find_uid_name(char *uid, char *name, size_t nlen); void find_uid_name(char *uid, char *name, size_t nlen);
void do_sstat_room(char_data * ch, room_data *r); void do_sstat_room(struct char_data * ch, room_data *r);
void do_sstat_object(char_data *ch, obj_data *j); void do_sstat_object(char_data *ch, obj_data *j);
void do_sstat_character(char_data *ch, char_data *k); void do_sstat_character(char_data *ch, char_data *k);
void add_trigger(struct script_data *sc, trig_data *t, int loc); void add_trigger(struct script_data *sc, trig_data *t, int loc);
void script_vlog(const char *format, va_list args); void script_vlog(const char *format, va_list args);
void script_log(const char *format, ...) __attribute__ ((format (printf, 1, 2))); void script_log(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
char *matching_quote(char *p); char *matching_quote(char *p);
struct room_data *dg_room_of_obj(obj_data *obj); struct room_data *dg_room_of_obj(struct obj_data *obj);
bool check_flags_by_name_ar(int *array, int numflags, char *search, const char *namelist[]); bool check_flags_by_name_ar(int *array, int numflags, char *search, const char *namelist[]);
void read_saved_vars_ascii(FILE *file, char_data *ch, int count); void read_saved_vars_ascii(FILE *file, struct char_data *ch, int count);
void save_char_vars_ascii(FILE *file, char_data *ch); void save_char_vars_ascii(FILE *file, struct char_data *ch);
int perform_set_dg_var(char_data *ch, char_data *vict, char *val_arg); int perform_set_dg_var(struct char_data *ch, struct char_data *vict, char *val_arg);
int trig_is_attached(struct script_data *sc, trig_vnum trig_num); int trig_is_attached(struct script_data *sc, int trig_num);
/* To maintain strict-aliasing we'll have to do this trick with a union */ /* To maintain strict-aliasing we'll have to do this trick with a union */
/* Thanks to Chris Gilbert for reminding me that there are other options. */ /* Thanks to Chris Gilbert for reminding me that there are other options. */
int script_driver(void *go_adress, trig_data *trig, int type, int mode); int script_driver(void *go_adress, trig_data *trig, int type, int mode);
trig_rnum real_trigger(trig_vnum vnum); trig_rnum real_trigger(trig_vnum vnum);
void process_eval(void *go, struct script_data *sc, trig_data *trig, int type, char *cmd); void process_eval(void *go, struct script_data *sc, trig_data *trig,
void read_saved_vars(char_data *ch); int type, char *cmd);
void save_char_vars(char_data *ch); void read_saved_vars(struct char_data *ch);
void save_char_vars(struct char_data *ch);
void init_lookup_table(void); void init_lookup_table(void);
void add_to_lookup_table(long uid, void *c); void add_to_lookup_table(long uid, void *c);
void remove_from_lookup_table(long uid); void remove_from_lookup_table(long uid);
@@ -310,18 +323,20 @@ void parse_trigger(FILE *trig_f, int nr);
trig_data *read_trigger(int nr); trig_data *read_trigger(int nr);
void trig_data_copy(trig_data *this_data, const trig_data *trg); void trig_data_copy(trig_data *this_data, const trig_data *trg);
void dg_read_trigger(FILE *fp, void *proto, int type); void dg_read_trigger(FILE *fp, void *proto, int type);
void dg_obj_trigger(char *line, obj_data *obj); void dg_obj_trigger(char *line, struct obj_data *obj);
void assign_triggers(void *i, int type); void assign_triggers(void *i, int type);
/* From dg_variables.c */ /* From dg_variables.c */
void add_var(struct trig_var_data **var_list, const char *name, const char *value, long id); void add_var(struct trig_var_data **var_list, const char *name, const char *value, long id);
int item_in_list(char *item, obj_data *list); int item_in_list(char *item, obj_data *list);
char *skill_percent(char_data *ch, char *skill); char *skill_percent(struct char_data *ch, char *skill);
int char_has_item(char *item, char_data *ch); int char_has_item(char *item, struct char_data *ch);
void var_subst(void *go, struct script_data *sc, trig_data *trig, int type, char *line, char *buf); void var_subst(void *go, struct script_data *sc, trig_data *trig,
int text_processed(char *field, char *subfield, struct trig_var_data *vd, char *str, size_t slen); int type, char *line, char *buf);
void find_replacement(void *go, struct script_data *sc, trig_data *trig, int type, char *var, char *field, int text_processed(char *field, char *subfield, struct trig_var_data *vd,
char *subfield, char *str, size_t slen); char *str, size_t slen);
void find_replacement(void *go, struct script_data *sc, trig_data *trig,
int type, char *var, char *field, char *subfield, char *str, size_t slen);
/* From dg_handler.c */ /* From dg_handler.c */
void free_var_el(struct trig_var_data *var); void free_var_el(struct trig_var_data *var);
@@ -342,9 +357,11 @@ void sub_write(char *arg, char_data *ch, byte find_invis, int targets);
void send_to_zone(char *messg, zone_rnum zone); void send_to_zone(char *messg, zone_rnum zone);
/* from dg_misc.c */ /* from dg_misc.c */
void do_dg_cast(void *go, struct script_data *sc, trig_data *trig, int type, char *cmd); void do_dg_cast(void *go, struct script_data *sc, trig_data *trig,
void do_dg_affect(void *go, struct script_data *sc, trig_data *trig, int type, char *cmd); int type, char *cmd);
void send_char_pos(char_data *ch, int dam); void do_dg_affect(void *go, struct script_data *sc, trig_data *trig,
int type, char *cmd);
void send_char_pos(struct char_data *ch, int dam);
int valid_dg_target(char_data *ch, int bitvector); int valid_dg_target(char_data *ch, int bitvector);
void script_damage(char_data *vict, int dam); void script_damage(char_data *vict, int dam);
@@ -373,10 +390,10 @@ ACMD(do_mzoneecho);
ACMD(do_mlog); ACMD(do_mlog);
/* from dg_olc.c... thinking these should be moved to oasis.h */ /* from dg_olc.c... thinking these should be moved to oasis.h */
void trigedit_save(descriptor_data *d); void trigedit_save(struct descriptor_data *d);
void trigedit_string_cleanup(descriptor_data *d, int terminator); void trigedit_string_cleanup(struct descriptor_data *d, int terminator);
int format_script(descriptor_data *d); int format_script(struct descriptor_data *d);
void trigedit_setup_existing(descriptor_data *d, int rtrg_num); void trigedit_setup_existing(struct descriptor_data *d, int rtrg_num);
/* from dg_objcmd.c */ /* from dg_objcmd.c */
room_rnum obj_room(obj_data *obj); room_rnum obj_room(obj_data *obj);
@@ -418,8 +435,10 @@ void wld_command_interpreter(room_data *room, char *argument);
#define GET_SHORT(ch) ((ch)->player.short_descr) #define GET_SHORT(ch) ((ch)->player.short_descr)
#define SCRIPT_CHECK(go, type) (SCRIPT(go) && IS_SET(SCRIPT_TYPES(SCRIPT(go)), type)) #define SCRIPT_CHECK(go, type) (SCRIPT(go) && \
#define TRIGGER_CHECK(t, type) (IS_SET(GET_TRIG_TYPE(t), type) && !GET_TRIG_DEPTH(t)) IS_SET(SCRIPT_TYPES(SCRIPT(go)), type))
#define TRIGGER_CHECK(t, type) (IS_SET(GET_TRIG_TYPE(t), type) && \
!GET_TRIG_DEPTH(t))
/* This formerly used 'go' instead of 'id' and referenced 'go->id' but this is /* This formerly used 'go' instead of 'id' and referenced 'go->id' but this is

View File

@@ -412,7 +412,7 @@ void act_mtrigger(const char_data *ch, char *str, char_data *actor,
void fight_mtrigger(char_data *ch) void fight_mtrigger(char_data *ch)
{ {
char_data *actor; struct char_data *actor;
trig_data *t; trig_data *t;
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
@@ -437,7 +437,7 @@ void fight_mtrigger(char_data *ch)
void hitprcnt_mtrigger(char_data *ch) void hitprcnt_mtrigger(char_data *ch)
{ {
char_data *actor; struct char_data *actor;
trig_data *t; trig_data *t;
char buf[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH];
@@ -676,7 +676,7 @@ void random_otrigger(obj_data *obj)
} }
} }
void timer_otrigger(obj_data *obj) void timer_otrigger(struct obj_data *obj)
{ {
trig_data *t; trig_data *t;

View File

@@ -65,7 +65,7 @@ void add_var(struct trig_var_data **var_list, const char *name, const char *valu
} }
/* perhaps not the best place for this, but I didn't want a new file */ /* perhaps not the best place for this, but I didn't want a new file */
char *skill_percent(char_data *ch, char *skill) char *skill_percent(struct char_data *ch, char *skill)
{ {
static char retval[16]; static char retval[16];
int skillnum; int skillnum;
@@ -98,7 +98,7 @@ int item_in_list(char *item, obj_data *list)
count += item_in_list(item, i->contains); count += item_in_list(item, i->contains);
} }
} else if (is_number(item)) { /* check for vnum */ } else if (is_number(item)) { /* check for vnum */
obj_vnum ovnum = atoidx(item); obj_vnum ovnum = atoi(item);
for (i = list; i; i = i->next_content) { for (i = list; i; i = i->next_content) {
if (GET_OBJ_VNUM(i) == ovnum) if (GET_OBJ_VNUM(i) == ovnum)
@@ -120,7 +120,7 @@ int item_in_list(char *item, obj_data *list)
/* BOOLEAN return, just check if a player or mob has an item of any sort, /* BOOLEAN return, just check if a player or mob has an item of any sort,
* searched for by name or id. Searching equipment as well as inventory, and * searched for by name or id. Searching equipment as well as inventory, and
* containers. Jamie Nelson */ * containers. Jamie Nelson */
int char_has_item(char *item, char_data *ch) int char_has_item(char *item, struct char_data *ch)
{ {
/* If this works, no more searching needed */ /* If this works, no more searching needed */
@@ -133,7 +133,7 @@ int char_has_item(char *item, char_data *ch)
return 1; return 1;
} }
static int handle_oset(obj_data * obj, char * argument) static int handle_oset(struct obj_data * obj, char * argument)
{ {
int i = 0; int i = 0;
bool found = FALSE; bool found = FALSE;
@@ -141,7 +141,7 @@ static int handle_oset(obj_data * obj, char * argument)
struct oset_handler { struct oset_handler {
const char * type; const char * type;
bool (* name)(obj_data *, char *); bool (* name)(struct obj_data *, char *);
} handler[] = { } handler[] = {
{ "alias", oset_alias }, { "alias", oset_alias },
{ "apply", oset_apply }, { "apply", oset_apply },
@@ -256,7 +256,6 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
struct room_data *room, *r = NULL; struct room_data *room, *r = NULL;
char *name; char *name;
int num, count, i, j, doors; int num, count, i, j, doors;
IDXTYPE idx;
char *log_cmd[] = {"mlog ", "olog ", "wlog " }; char *log_cmd[] = {"mlog ", "olog ", "wlog " };
char *send_cmd[] = {"msend ", "osend ", "wsend " }; char *send_cmd[] = {"msend ", "osend ", "wsend " };
@@ -430,7 +429,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
return; return;
} }
else if (!str_cmp(var, "people")) { else if (!str_cmp(var, "people")) {
snprintf(str, slen, "%d",((num = atoidx(field)) > 0) ? trgvar_in_room(num) : 0); snprintf(str, slen, "%d",((num = atoi(field)) > 0) ? trgvar_in_room(num) : 0);
return; return;
} }
else if (!str_cmp(var, "happyhour")) { else if (!str_cmp(var, "happyhour")) {
@@ -470,8 +469,8 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
script_log("findmob.vnum(mvnum) - illegal syntax"); script_log("findmob.vnum(mvnum) - illegal syntax");
strcpy(str, "0"); strcpy(str, "0");
} else { } else {
room_rnum rrnum = real_room(atoidx(field)); room_rnum rrnum = real_room(atoi(field));
mob_vnum mvnum = atoidx(subfield); mob_vnum mvnum = atoi(subfield);
if (rrnum == NOWHERE) { if (rrnum == NOWHERE) {
script_log("findmob.vnum(ovnum): No room with vnum %d", atoi(field)); script_log("findmob.vnum(ovnum): No room with vnum %d", atoi(field));
@@ -491,7 +490,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
script_log("findobj.vnum(ovnum) - illegal syntax"); script_log("findobj.vnum(ovnum) - illegal syntax");
strcpy(str, "0"); strcpy(str, "0");
} else { } else {
room_rnum rrnum = real_room(atoidx(field)); room_rnum rrnum = real_room(atoi(field));
if (rrnum == NOWHERE) { if (rrnum == NOWHERE) {
script_log("findobj.vnum(ovnum): No room with vnum %d", atoi(field)); script_log("findobj.vnum(ovnum): No room with vnum %d", atoi(field));
@@ -553,10 +552,10 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
in_room = real_room(((struct room_data *) go)->number); in_room = real_room(((struct room_data *) go)->number);
break; break;
case OBJ_TRIGGER: case OBJ_TRIGGER:
in_room = obj_room((obj_data *) go); in_room = obj_room((struct obj_data *) go);
break; break;
case MOB_TRIGGER: case MOB_TRIGGER:
in_room = IN_ROOM((char_data *)go); in_room = IN_ROOM((struct char_data *)go);
break; break;
} }
if (in_room == NOWHERE) { if (in_room == NOWHERE) {
@@ -979,7 +978,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
else if (!str_cmp(field, "questdone")) else if (!str_cmp(field, "questdone"))
{ {
if (!IS_NPC(c) && subfield && *subfield) { if (!IS_NPC(c) && subfield && *subfield) {
qst_vnum q_num = atoidx(subfield); int q_num = atoi(subfield);
if (is_complete(c, q_num)) if (is_complete(c, q_num))
strcpy(str, "1"); strcpy(str, "1");
else else
@@ -1112,7 +1111,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
* something like if %actor.vnum(500)%. It should return false for PC's instead * something like if %actor.vnum(500)%. It should return false for PC's instead
* -- Fizban 02/18 * -- Fizban 02/18
*/ */
snprintf(str, slen, "%d", IS_NPC(c) ? GET_MOB_VNUM(c) == atoidx(subfield) : 0 ); snprintf(str, slen, "%d", IS_NPC(c) ? (int)(GET_MOB_VNUM(c) == atoi(subfield)) : 0 );
} else { } else {
if (IS_NPC(c)) if (IS_NPC(c))
snprintf(str, slen, "%d", GET_MOB_VNUM(c)); snprintf(str, slen, "%d", GET_MOB_VNUM(c));
@@ -1250,8 +1249,8 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
if (!(subfield && *subfield)) if (!(subfield && *subfield))
*str = '\0'; *str = '\0';
else { else {
idx = atoidx(subfield); i = atoi(subfield);
snprintf(str, slen, "%d", trig_is_attached(SCRIPT(o), idx)); snprintf(str, slen, "%d", trig_is_attached(SCRIPT(o), i));
} }
} }
break; break;
@@ -1312,7 +1311,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
case 'v': case 'v':
if (!str_cmp(field, "vnum")) if (!str_cmp(field, "vnum"))
if (subfield && *subfield) { if (subfield && *subfield) {
snprintf(str, slen, "%d", GET_OBJ_VNUM(o) == atoidx(subfield)); snprintf(str, slen, "%d", (int)(GET_OBJ_VNUM(o) == atoi(subfield)));
} else { } else {
snprintf(str, slen, "%d", GET_OBJ_VNUM(o)); snprintf(str, slen, "%d", GET_OBJ_VNUM(o));
} }
@@ -1404,14 +1403,14 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
else if (!str_cmp(field, "vnum")) { else if (!str_cmp(field, "vnum")) {
if (subfield && *subfield) { if (subfield && *subfield) {
snprintf(str, slen, "%d", r->number == atoidx(subfield)); snprintf(str, slen, "%d", (int)(r->number == atoi(subfield)));
} else { } else {
snprintf(str, slen,"%d",r->number); snprintf(str, slen,"%d",r->number);
} }
} else if (!str_cmp(field, "contents")) { } else if (!str_cmp(field, "contents")) {
if (subfield && *subfield) { if (subfield && *subfield) {
for (obj = r->contents; obj; obj = obj->next_content) { for (obj = r->contents; obj; obj = obj->next_content) {
if (GET_OBJ_VNUM(obj) == atoidx(subfield)) { if (GET_OBJ_VNUM(obj) == atoi(subfield)) {
/* arg given, found */ /* arg given, found */
snprintf(str, slen, "%c%ld", UID_CHAR, obj_script_id(obj)); snprintf(str, slen, "%c%ld", UID_CHAR, obj_script_id(obj));
return; return;
@@ -1458,8 +1457,8 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
if (!(subfield && *subfield)) if (!(subfield && *subfield))
*str = '\0'; *str = '\0';
else { else {
idx = atoidx(subfield); i = atoi(subfield);
snprintf(str, slen, "%d", trig_is_attached(SCRIPT(r), idx)); snprintf(str, slen, "%d", trig_is_attached(SCRIPT(r), i));
} }
} }
else if (!str_cmp(field, "zonenumber")) else if (!str_cmp(field, "zonenumber"))

View File

@@ -169,7 +169,7 @@ WCMD(do_wzoneecho)
if (!*room_num || !*msg) if (!*room_num || !*msg)
wld_log(room, "wzoneecho called with too few args"); wld_log(room, "wzoneecho called with too few args");
else if ((zone = real_zone_by_thing(atoidx(room_num))) == NOWHERE) else if ((zone = real_zone_by_thing(atoi(room_num))) == NOWHERE)
wld_log(room, "wzoneecho called for nonexistant zone"); wld_log(room, "wzoneecho called for nonexistant zone");
else { else {
@@ -191,7 +191,7 @@ WCMD(do_wrecho)
if (!*msg || !*start || !*finish || !is_number(start) || !is_number(finish)) if (!*msg || !*start || !*finish || !is_number(start) || !is_number(finish))
wld_log(room, "wrecho: too few args"); wld_log(room, "wrecho: too few args");
else else
send_to_range(atoidx(start), atoidx(finish), "%s\r\n", msg); send_to_range(atoi(start), atoi(finish), "%s\r\n", msg);
} }
@@ -270,7 +270,7 @@ WCMD(do_wdoor)
newexit->exit_info = (sh_int)asciiflag_conv(value); newexit->exit_info = (sh_int)asciiflag_conv(value);
break; break;
case 3: /* key */ case 3: /* key */
newexit->key = atoidx(value); newexit->key = atoi(value);
break; break;
case 4: /* name */ case 4: /* name */
if (newexit->keyword) if (newexit->keyword)
@@ -279,7 +279,7 @@ WCMD(do_wdoor)
strcpy(newexit->keyword, value); strcpy(newexit->keyword, value);
break; break;
case 5: /* room */ case 5: /* room */
if ((to_room = real_room(atoidx(value))) != NOWHERE) if ((to_room = real_room(atoi(value))) != NOWHERE)
newexit->to_room = to_room; newexit->to_room = to_room;
else else
wld_log(room, "wdoor: invalid door target"); wld_log(room, "wdoor: invalid door target");
@@ -291,8 +291,7 @@ WCMD(do_wdoor)
WCMD(do_wteleport) WCMD(do_wteleport)
{ {
char_data *ch, *next_ch; char_data *ch, *next_ch;
room_rnum target; room_rnum target, nr;
room_vnum nr;
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH];
two_arguments(argument, arg1, arg2); two_arguments(argument, arg1, arg2);
@@ -302,7 +301,7 @@ WCMD(do_wteleport)
return; return;
} }
nr = atoidx(arg2); nr = atoi(arg2);
target = real_room(nr); target = real_room(nr);
if (target == NOWHERE) if (target == NOWHERE)
@@ -436,7 +435,7 @@ WCMD(do_wpurge)
WCMD(do_wload) WCMD(do_wload)
{ {
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH];
IDXTYPE number = NOTHING; int number = 0;
char_data *mob; char_data *mob;
obj_data *object; obj_data *object;
char *target; char *target;
@@ -446,7 +445,7 @@ WCMD(do_wload)
target = two_arguments(argument, arg1, arg2); target = two_arguments(argument, arg1, arg2);
if (!*arg1 || !*arg2 || !is_number(arg2) || (number = atoidx(arg2)) == NOTHING) { if (!*arg1 || !*arg2 || !is_number(arg2) || ((number = atoi(arg2)) < 0)) {
wld_log(room, "wload: bad syntax"); wld_log(room, "wload: bad syntax");
return; return;
} }
@@ -457,7 +456,7 @@ WCMD(do_wload)
if (!target || !*target) { if (!target || !*target) {
rnum = real_room(room->number); rnum = real_room(room->number);
} else { } else {
if (!isdigit(*target) || (rnum = real_room(atoidx(target))) == NOWHERE) { if (!isdigit(*target) || (rnum = real_room(atoi(target))) == NOWHERE) {
wld_log(room, "wload: room target vnum doesn't exist (loading mob vnum %d to room %s)", number, target); wld_log(room, "wload: room target vnum doesn't exist (loading mob vnum %d to room %s)", number, target);
return; return;
} }
@@ -548,7 +547,7 @@ WCMD(do_wdamage) {
WCMD(do_wat) WCMD(do_wat)
{ {
room_rnum loc = NOWHERE; room_rnum loc = NOWHERE;
char_data *ch; struct char_data *ch;
char arg[MAX_INPUT_LENGTH], *command; char arg[MAX_INPUT_LENGTH], *command;
command = any_one_arg(argument, arg); command = any_one_arg(argument, arg);
@@ -565,7 +564,7 @@ WCMD(do_wat)
return; return;
} }
if (isdigit(*arg)) loc = real_room(atoidx(arg)); if (isdigit(*arg)) loc = real_room(atoi(arg));
else if ((ch = get_char_by_room(room, arg))) loc = IN_ROOM(ch); else if ((ch = get_char_by_room(room, arg))) loc = IN_ROOM(ch);
if (loc == NOWHERE) { if (loc == NOWHERE) {
@@ -578,8 +577,7 @@ WCMD(do_wat)
WCMD(do_wmove) WCMD(do_wmove)
{ {
obj_data *obj, *next_obj; obj_data *obj, *next_obj;
room_rnum target; room_rnum target, nr;
room_vnum nr;
char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH];
two_arguments(argument, arg1, arg2); two_arguments(argument, arg1, arg2);
@@ -589,7 +587,7 @@ WCMD(do_wmove)
return; return;
} }
nr = atoidx(arg2); nr = atoi(arg2);
target = real_room(nr); target = real_room(nr);
if (target == NOWHERE) { if (target == NOWHERE) {

View File

@@ -1054,7 +1054,7 @@ INCLUDE_FILE_PATTERNS =
# undefined via #undef or recursively expanded use the := operator # undefined via #undef or recursively expanded use the := operator
# instead of the = operator. # instead of the = operator.
PREDEFINED = "ACMD(name)=void name (char_data *ch, char *argument, int cmd, int subcmd)" "WCMD(name)=void name (room_data *room, char *argument, int cmd, int subcmd)" "OCMD(name)=void name(obj_data *obj, char *argument, int cmd, int subcmd)" "SPECIAL(name)=int name(char_data *ch, void *me, int cmd, char *argument)" PREDEFINED = "ACMD(name)=void name (struct char_data *ch, char *argument, int cmd, int subcmd)" "WCMD(name)=void name (room_data *room, char *argument, int cmd, int subcmd)" "OCMD(name)=void name(obj_data *obj, char *argument, int cmd, int subcmd)" "SPECIAL(name)=int name(struct char_data *ch, void *me, int cmd, char *argument)"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded. # this tag can be used to specify a list of macro names that should be expanded.

View File

@@ -1054,7 +1054,7 @@ INCLUDE_FILE_PATTERNS =
# undefined via #undef or recursively expanded use the := operator # undefined via #undef or recursively expanded use the := operator
# instead of the = operator. # instead of the = operator.
PREDEFINED = "ACMD(name)=void name (char_data *ch, char *argument, int cmd, int subcmd)" "WCMD(name)=void name (room_data *room, char *argument, int cmd, int subcmd)" "OCMD(name)=void name(obj_data *obj, char *argument, int cmd, int subcmd)" "SPECIAL(name)=int name(char_data *ch, void *me, int cmd, char *argument)" PREDEFINED = "ACMD(name)=void name (struct char_data *ch, char *argument, int cmd, int subcmd)" "WCMD(name)=void name (room_data *room, char *argument, int cmd, int subcmd)" "OCMD(name)=void name(obj_data *obj, char *argument, int cmd, int subcmd)" "SPECIAL(name)=int name(struct char_data *ch, void *me, int cmd, char *argument)"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded. # this tag can be used to specify a list of macro names that should be expanded.

View File

@@ -29,7 +29,7 @@
/* locally defined global variables, used externally */ /* locally defined global variables, used externally */
/* head of l-list of fighting chars */ /* head of l-list of fighting chars */
char_data *combat_list = NULL; struct char_data *combat_list = NULL;
/* Weapon attack texts */ /* Weapon attack texts */
struct attack_hit_type attack_hit_text[] = struct attack_hit_type attack_hit_text[] =
{ {
@@ -51,23 +51,23 @@ struct attack_hit_type attack_hit_text[] =
}; };
/* local (file scope only) variables */ /* local (file scope only) variables */
static char_data *next_combat_list = NULL; static struct char_data *next_combat_list = NULL;
/* local file scope utility functions */ /* local file scope utility functions */
static void perform_group_gain(char_data *ch, int base, char_data *victim); static void perform_group_gain(struct char_data *ch, int base, struct char_data *victim);
static void dam_message(int dam, char_data *ch, char_data *victim, int w_type); static void dam_message(int dam, struct char_data *ch, struct char_data *victim, int w_type);
static void make_corpse(char_data *ch); static void make_corpse(struct char_data *ch);
static void change_alignment(char_data *ch, char_data *victim); static void change_alignment(struct char_data *ch, struct char_data *victim);
static void group_gain(char_data *ch, char_data *victim); static void group_gain(struct char_data *ch, struct char_data *victim);
static void solo_gain(char_data *ch, char_data *victim); static void solo_gain(struct char_data *ch, struct char_data *victim);
/** @todo refactor this function name */ /** @todo refactor this function name */
static char *replace_string(const char *str, const char *weapon_singular, const char *weapon_plural); static char *replace_string(const char *str, const char *weapon_singular, const char *weapon_plural);
static int compute_thaco(char_data *ch, char_data *vict); static int compute_thaco(struct char_data *ch, struct char_data *vict);
#define IS_WEAPON(type) (((type) >= TYPE_HIT) && ((type) < TYPE_SUFFERING)) #define IS_WEAPON(type) (((type) >= TYPE_HIT) && ((type) < TYPE_SUFFERING))
/* The Fight related routines */ /* The Fight related routines */
void appear(char_data *ch) void appear(struct char_data *ch)
{ {
if (affected_by_spell(ch, SPELL_INVISIBLE)) if (affected_by_spell(ch, SPELL_INVISIBLE))
affect_from_char(ch, SPELL_INVISIBLE); affect_from_char(ch, SPELL_INVISIBLE);
@@ -82,7 +82,7 @@ void appear(char_data *ch)
FALSE, ch, 0, 0, TO_ROOM); FALSE, ch, 0, 0, TO_ROOM);
} }
int compute_armor_class(char_data *ch) int compute_armor_class(struct char_data *ch)
{ {
int armorclass = GET_AC(ch); int armorclass = GET_AC(ch);
@@ -92,7 +92,7 @@ int compute_armor_class(char_data *ch)
return (MAX(-100, armorclass)); /* -100 is lowest */ return (MAX(-100, armorclass)); /* -100 is lowest */
} }
void update_pos(char_data *victim) void update_pos(struct char_data *victim)
{ {
if ((GET_HIT(victim) > 0) && (GET_POS(victim) > POS_STUNNED)) if ((GET_HIT(victim) > 0) && (GET_POS(victim) > POS_STUNNED))
return; return;
@@ -108,7 +108,7 @@ void update_pos(char_data *victim)
GET_POS(victim) = POS_STUNNED; GET_POS(victim) = POS_STUNNED;
} }
void check_killer(char_data *ch, char_data *vict) void check_killer(struct char_data *ch, struct char_data *vict)
{ {
if (PLR_FLAGGED(vict, PLR_KILLER) || PLR_FLAGGED(vict, PLR_THIEF)) if (PLR_FLAGGED(vict, PLR_KILLER) || PLR_FLAGGED(vict, PLR_THIEF))
return; return;
@@ -123,7 +123,7 @@ void check_killer(char_data *ch, char_data *vict)
} }
/* start one char fighting another (yes, it is horrible, I know... ) */ /* start one char fighting another (yes, it is horrible, I know... ) */
void set_fighting(char_data *ch, char_data *vict) void set_fighting(struct char_data *ch, struct char_data *vict)
{ {
if (ch == vict) if (ch == vict)
return; return;
@@ -147,9 +147,9 @@ void set_fighting(char_data *ch, char_data *vict)
} }
/* remove a char from the list of fighting chars */ /* remove a char from the list of fighting chars */
void stop_fighting(char_data *ch) void stop_fighting(struct char_data *ch)
{ {
char_data *temp; struct char_data *temp;
if (ch == next_combat_list) if (ch == next_combat_list)
next_combat_list = ch->next_fighting; next_combat_list = ch->next_fighting;
@@ -161,11 +161,11 @@ void stop_fighting(char_data *ch)
update_pos(ch); update_pos(ch);
} }
static void make_corpse(char_data *ch) static void make_corpse(struct char_data *ch)
{ {
char buf2[MAX_NAME_LENGTH + 64]; char buf2[MAX_NAME_LENGTH + 64];
obj_data *corpse, *o; struct obj_data *corpse, *o;
obj_data *money; struct obj_data *money;
int i, x, y; int i, x, y;
corpse = create_obj(); corpse = create_obj();
@@ -232,14 +232,14 @@ static void make_corpse(char_data *ch)
} }
/* When ch kills victim */ /* When ch kills victim */
static void change_alignment(char_data *ch, char_data *victim) static void change_alignment(struct char_data *ch, struct char_data *victim)
{ {
/* new alignment change algorithm: if you kill a monster with alignment A, /* new alignment change algorithm: if you kill a monster with alignment A,
* you move 1/16th of the way to having alignment -A. Simple and fast. */ * you move 1/16th of the way to having alignment -A. Simple and fast. */
GET_ALIGNMENT(ch) += (-GET_ALIGNMENT(victim) - GET_ALIGNMENT(ch)) / 16; GET_ALIGNMENT(ch) += (-GET_ALIGNMENT(victim) - GET_ALIGNMENT(ch)) / 16;
} }
void death_cry(char_data *ch) void death_cry(struct char_data *ch)
{ {
int door; int door;
@@ -250,9 +250,9 @@ void death_cry(char_data *ch)
send_to_room(world[IN_ROOM(ch)].dir_option[door]->to_room, "Your blood freezes as you hear someone's death cry.\r\n"); send_to_room(world[IN_ROOM(ch)].dir_option[door]->to_room, "Your blood freezes as you hear someone's death cry.\r\n");
} }
void raw_kill(char_data * ch, char_data * killer) void raw_kill(struct char_data * ch, struct char_data * killer)
{ {
char_data *i; struct char_data *i;
if (FIGHTING(ch)) if (FIGHTING(ch))
stop_fighting(ch); stop_fighting(ch);
@@ -271,7 +271,7 @@ char_data *i;
if (killer) { if (killer) {
if (killer->group) { if (killer->group) {
while ((i = (char_data *) simple_list(killer->group->members)) != NULL) while ((i = (struct char_data *) simple_list(killer->group->members)) != NULL)
if(IN_ROOM(i) == IN_ROOM(ch) || (world[IN_ROOM(i)].zone == world[IN_ROOM(ch)].zone)) if(IN_ROOM(i) == IN_ROOM(ch) || (world[IN_ROOM(i)].zone == world[IN_ROOM(ch)].zone))
autoquest_trigger_check(i, ch, NULL, AQ_MOB_KILL); autoquest_trigger_check(i, ch, NULL, AQ_MOB_KILL);
} else } else
@@ -293,7 +293,7 @@ char_data *i;
} }
} }
void die(char_data * ch, char_data * killer) void die(struct char_data * ch, struct char_data * killer)
{ {
gain_exp(ch, -(GET_EXP(ch) / 2)); gain_exp(ch, -(GET_EXP(ch) / 2));
if (!IS_NPC(ch)) { if (!IS_NPC(ch)) {
@@ -303,8 +303,8 @@ void die(char_data * ch, char_data * killer)
raw_kill(ch, killer); raw_kill(ch, killer);
} }
static void perform_group_gain(char_data *ch, int base, static void perform_group_gain(struct char_data *ch, int base,
char_data *victim) struct char_data *victim)
{ {
int share, hap_share; int share, hap_share;
@@ -325,12 +325,12 @@ static void perform_group_gain(char_data *ch, int base,
change_alignment(ch, victim); change_alignment(ch, victim);
} }
static void group_gain(char_data *ch, char_data *victim) static void group_gain(struct char_data *ch, struct char_data *victim)
{ {
int tot_members = 0, base, tot_gain; int tot_members = 0, base, tot_gain;
char_data *k; struct char_data *k;
while ((k = (char_data *) simple_list(GROUP(ch)->members)) != NULL) while ((k = (struct char_data *) simple_list(GROUP(ch)->members)) != NULL)
if (IN_ROOM(ch) == IN_ROOM(k)) if (IN_ROOM(ch) == IN_ROOM(k))
tot_members++; tot_members++;
@@ -346,12 +346,12 @@ static void group_gain(char_data *ch, char_data *victim)
else else
base = 0; base = 0;
while ((k = (char_data *) simple_list(GROUP(ch)->members)) != NULL) while ((k = (struct char_data *) simple_list(GROUP(ch)->members)) != NULL)
if (IN_ROOM(k) == IN_ROOM(ch)) if (IN_ROOM(k) == IN_ROOM(ch))
perform_group_gain(k, base, victim); perform_group_gain(k, base, victim);
} }
static void solo_gain(char_data *ch, char_data *victim) static void solo_gain(struct char_data *ch, struct char_data *victim)
{ {
int exp, happy_exp; int exp, happy_exp;
@@ -407,7 +407,7 @@ static char *replace_string(const char *str, const char *weapon_singular, const
} }
/* message for doing damage with a weapon */ /* message for doing damage with a weapon */
static void dam_message(int dam, char_data *ch, char_data *victim, static void dam_message(int dam, struct char_data *ch, struct char_data *victim,
int w_type) int w_type)
{ {
char *buf; char *buf;
@@ -512,13 +512,13 @@ static void dam_message(int dam, char_data *ch, char_data *victim,
/* message for doing damage with a spell or skill. Also used for weapon /* message for doing damage with a spell or skill. Also used for weapon
* damage on miss and death blows. */ * damage on miss and death blows. */
int skill_message(int dam, char_data *ch, char_data *vict, int skill_message(int dam, struct char_data *ch, struct char_data *vict,
int attacktype) int attacktype)
{ {
int i, j, nr; int i, j, nr;
struct message_type *msg; struct message_type *msg;
obj_data *weap = GET_EQ(ch, WEAR_WIELD); struct obj_data *weap = GET_EQ(ch, WEAR_WIELD);
/* @todo restructure the messages library to a pointer based system as /* @todo restructure the messages library to a pointer based system as
* opposed to the current cyclic location system. */ * opposed to the current cyclic location system. */
@@ -585,12 +585,12 @@ int skill_message(int dam, char_data *ch, char_data *vict,
* < 0 Victim died. * < 0 Victim died.
* = 0 No damage. * = 0 No damage.
* > 0 How much damage done. */ * > 0 How much damage done. */
int damage(char_data *ch, char_data *victim, int dam, int attacktype) int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype)
{ {
long local_gold = 0, happy_gold = 0; long local_gold = 0, happy_gold = 0;
char local_buf[256]; char local_buf[256];
char_data *tmp_char; struct char_data *tmp_char;
obj_data *corpse_obj; struct obj_data *corpse_obj;
if (GET_POS(victim) <= POS_DEAD) { if (GET_POS(victim) <= POS_DEAD) {
/* This is "normal"-ish now with delayed extraction. -gg 3/15/2001 */ /* This is "normal"-ish now with delayed extraction. -gg 3/15/2001 */
@@ -791,7 +791,7 @@ int damage(char_data *ch, char_data *victim, int dam, int attacktype)
/* Calculate the THAC0 of the attacker. 'victim' currently isn't used but you /* Calculate the THAC0 of the attacker. 'victim' currently isn't used but you
* could use it for special cases like weapons that hit evil creatures easier * could use it for special cases like weapons that hit evil creatures easier
* or a weapon that always misses attacking an animal. */ * or a weapon that always misses attacking an animal. */
static int compute_thaco(char_data *ch, char_data *victim) static int compute_thaco(struct char_data *ch, struct char_data *victim)
{ {
int calc_thaco; int calc_thaco;
@@ -807,9 +807,9 @@ static int compute_thaco(char_data *ch, char_data *victim)
return calc_thaco; return calc_thaco;
} }
void hit(char_data *ch, char_data *victim, int type) void hit(struct char_data *ch, struct char_data *victim, int type)
{ {
obj_data *wielded = GET_EQ(ch, WEAR_WIELD); struct obj_data *wielded = GET_EQ(ch, WEAR_WIELD);
int w_type, victim_ac, calc_thaco, dam, diceroll; int w_type, victim_ac, calc_thaco, dam, diceroll;
/* Check that the attacker and victim exist */ /* Check that the attacker and victim exist */
@@ -910,7 +910,7 @@ void hit(char_data *ch, char_data *victim, int type)
/* control the fights going on. Called every 2 seconds from comm.c. */ /* control the fights going on. Called every 2 seconds from comm.c. */
void perform_violence(void) void perform_violence(void)
{ {
char_data *ch, *tch; struct char_data *ch, *tch;
for (ch = combat_list; ch; ch = next_combat_list) { for (ch = combat_list; ch; ch = next_combat_list) {
next_combat_list = ch->next_fighting; next_combat_list = ch->next_fighting;
@@ -940,7 +940,7 @@ void perform_violence(void)
if (GROUP(ch) && GROUP(ch)->members && GROUP(ch)->members->iSize) { if (GROUP(ch) && GROUP(ch)->members && GROUP(ch)->members->iSize) {
struct iterator_data Iterator; struct iterator_data Iterator;
tch = (char_data *) merge_iterator(&Iterator, GROUP(ch)->members); tch = (struct char_data *) merge_iterator(&Iterator, GROUP(ch)->members);
for (; tch ; tch = next_in_list(&Iterator)) { for (; tch ; tch = next_in_list(&Iterator)) {
if (tch == ch) if (tch == ch)
continue; continue;

View File

@@ -21,22 +21,23 @@ struct attack_hit_type {
}; };
/* Functions available in fight.c */ /* Functions available in fight.c */
void appear(char_data *ch); void appear(struct char_data *ch);
void check_killer(char_data *ch, char_data *vict); void check_killer(struct char_data *ch, struct char_data *vict);
int compute_armor_class(char_data *ch); int compute_armor_class(struct char_data *ch);
int damage(char_data *ch, char_data *victim, int dam, int attacktype); int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype);
void death_cry(char_data *ch); void death_cry(struct char_data *ch);
void die(char_data * ch, char_data * killer); void die(struct char_data * ch, struct char_data * killer);
void hit(char_data *ch, char_data *victim, int type); void hit(struct char_data *ch, struct char_data *victim, int type);
void perform_violence(void); void perform_violence(void);
void raw_kill(char_data * ch, char_data * killer); void raw_kill(struct char_data * ch, struct char_data * killer);
void set_fighting(char_data *ch, char_data *victim); void set_fighting(struct char_data *ch, struct char_data *victim);
int skill_message(int dam, char_data *ch, char_data *vict, int attacktype); int skill_message(int dam, struct char_data *ch, struct char_data *vict,
void stop_fighting(char_data *ch); int attacktype);
void stop_fighting(struct char_data *ch);
/* Global variables */ /* Global variables */
extern struct attack_hit_type attack_hit_text[]; extern struct attack_hit_type attack_hit_text[];
extern char_data *combat_list; extern struct char_data *combat_list;
#endif /* _FIGHT_H_*/ #endif /* _FIGHT_H_*/

View File

@@ -21,11 +21,11 @@
/* local functions */ /* local functions */
static void extract_mobile_all(mob_vnum vnum); static void extract_mobile_all(mob_vnum vnum);
int add_mobile(char_data *mob, mob_vnum vnum) int add_mobile(struct char_data *mob, mob_vnum vnum)
{ {
int rnum, i, found = FALSE, shop, cmd_no; int rnum, i, found = FALSE, shop, cmd_no;
zone_rnum zone; zone_rnum zone;
char_data *live_mob; struct char_data *live_mob;
if ((rnum = real_mobile(vnum)) != NOBODY) { if ((rnum = real_mobile(vnum)) != NOBODY) {
/* Copy over the mobile and free() the old strings. */ /* Copy over the mobile and free() the old strings. */
@@ -41,7 +41,7 @@ int add_mobile(char_data *mob, mob_vnum vnum)
return rnum; return rnum;
} }
RECREATE(mob_proto, char_data, top_of_mobt + 2); RECREATE(mob_proto, struct char_data, top_of_mobt + 2);
RECREATE(mob_index, struct index_data, top_of_mobt + 2); RECREATE(mob_index, struct index_data, top_of_mobt + 2);
top_of_mobt++; top_of_mobt++;
@@ -90,7 +90,7 @@ int add_mobile(char_data *mob, mob_vnum vnum)
return found; return found;
} }
int copy_mobile(char_data *to, char_data *from) int copy_mobile(struct char_data *to, struct char_data *from)
{ {
free_mobile_strings(to); free_mobile_strings(to);
*to = *from; *to = *from;
@@ -101,7 +101,7 @@ int copy_mobile(char_data *to, char_data *from)
static void extract_mobile_all(mob_vnum vnum) static void extract_mobile_all(mob_vnum vnum)
{ {
char_data *next, *ch; struct char_data *next, *ch;
int i; int i;
for (ch = character_list; ch; ch = next) { for (ch = character_list; ch; ch = next) {
@@ -140,8 +140,8 @@ static void extract_mobile_all(mob_vnum vnum)
int delete_mobile(mob_rnum refpt) int delete_mobile(mob_rnum refpt)
{ {
char_data *live_mob; struct char_data *live_mob;
char_data *proto; struct char_data *proto;
int counter, cmd_no; int counter, cmd_no;
mob_vnum vnum; mob_vnum vnum;
zone_rnum zone; zone_rnum zone;
@@ -169,7 +169,7 @@ int delete_mobile(mob_rnum refpt)
top_of_mobt--; top_of_mobt--;
RECREATE(mob_index, struct index_data, top_of_mobt + 1); RECREATE(mob_index, struct index_data, top_of_mobt + 1);
RECREATE(mob_proto, char_data, top_of_mobt + 1); RECREATE(mob_proto, struct char_data, top_of_mobt + 1);
/* Update live mobile rnums. */ /* Update live mobile rnums. */
for (live_mob = character_list; live_mob; live_mob = live_mob->next) for (live_mob = character_list; live_mob; live_mob = live_mob->next)
@@ -195,7 +195,7 @@ int delete_mobile(mob_rnum refpt)
return refpt; return refpt;
} }
int copy_mobile_strings(char_data *t, char_data *f) int copy_mobile_strings(struct char_data *t, struct char_data *f)
{ {
if (f->player.name) if (f->player.name)
t->player.name = strdup(f->player.name); t->player.name = strdup(f->player.name);
@@ -210,7 +210,7 @@ int copy_mobile_strings(char_data *t, char_data *f)
return TRUE; return TRUE;
} }
int update_mobile_strings(char_data *t, char_data *f) int update_mobile_strings(struct char_data *t, struct char_data *f)
{ {
if (f->player.name) if (f->player.name)
t->player.name = f->player.name; t->player.name = f->player.name;
@@ -225,7 +225,7 @@ int update_mobile_strings(char_data *t, char_data *f)
return TRUE; return TRUE;
} }
int free_mobile_strings(char_data *mob) int free_mobile_strings(struct char_data *mob)
{ {
if (mob->player.name) if (mob->player.name)
free(mob->player.name); free(mob->player.name);
@@ -242,7 +242,7 @@ int free_mobile_strings(char_data *mob)
/* Free a mobile structure that has been edited. Take care of existing mobiles /* Free a mobile structure that has been edited. Take care of existing mobiles
* and their mob_proto! */ * and their mob_proto! */
int free_mobile(char_data *mob) int free_mobile(struct char_data *mob)
{ {
mob_rnum i; mob_rnum i;
@@ -325,7 +325,7 @@ int save_mobiles(zone_rnum rznum)
return written; return written;
} }
int write_mobile_espec(mob_vnum mvnum, char_data *mob, FILE *fd) int write_mobile_espec(mob_vnum mvnum, struct char_data *mob, FILE *fd)
{ {
if (GET_ATTACK(mob) != 0) if (GET_ATTACK(mob) != 0)
fprintf(fd, "BareHandAttack: %d\n", GET_ATTACK(mob)); fprintf(fd, "BareHandAttack: %d\n", GET_ATTACK(mob));
@@ -357,7 +357,7 @@ int write_mobile_espec(mob_vnum mvnum, char_data *mob, FILE *fd)
return TRUE; return TRUE;
} }
int write_mobile_record(mob_vnum mvnum, char_data *mob, FILE *fd) int write_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd)
{ {
char ldesc[MAX_STRING_LENGTH]; char ldesc[MAX_STRING_LENGTH];
char ddesc[MAX_STRING_LENGTH]; char ddesc[MAX_STRING_LENGTH];
@@ -419,7 +419,7 @@ int write_mobile_record(mob_vnum mvnum, char_data *mob, FILE *fd)
return TRUE; return TRUE;
} }
void check_mobile_strings(char_data *mob) void check_mobile_strings(struct char_data *mob)
{ {
mob_vnum mvnum = mob_index[mob->nr].vnum; mob_vnum mvnum = mob_index[mob->nr].vnum;
check_mobile_string(mvnum, &GET_LDESC(mob), "long description"); check_mobile_string(mvnum, &GET_LDESC(mob), "long description");

View File

@@ -13,21 +13,21 @@
#define _GENMOB_H_ #define _GENMOB_H_
int delete_mobile(mob_rnum); int delete_mobile(mob_rnum);
int copy_mobile(char_data *to, char_data *from); int copy_mobile(struct char_data *to, struct char_data *from);
int add_mobile(char_data *, mob_vnum); int add_mobile(struct char_data *, mob_vnum);
int copy_mob_strings(char_data *to, char_data *from); int copy_mob_strings(struct char_data *to, struct char_data *from);
int free_mob_strings(char_data *); int free_mob_strings(struct char_data *);
int free_mobile(char_data *mob); int free_mobile(struct char_data *mob);
int save_mobiles(zone_rnum rznum); int save_mobiles(zone_rnum rznum);
int update_mobile_strings(char_data *t, char_data *f); int update_mobile_strings(struct char_data *t, struct char_data *f);
void check_mobile_strings(char_data *mob); void check_mobile_strings(struct char_data *mob);
void check_mobile_string(mob_vnum i, char **string, const char *desc); void check_mobile_string(mob_vnum i, char **string, const char *desc);
int write_mobile_record(mob_vnum mvnum, char_data *mob, FILE *fd); int write_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd);
int write_mobile_espec(mob_vnum mvnum, char_data *mob, FILE *fd); int write_mobile_espec(mob_vnum mvnum, struct char_data *mob, FILE *fd);
int free_mobile_strings(char_data *mob); int free_mobile_strings(struct char_data *mob);
int copy_mobile_strings(char_data *t, char_data *f); int copy_mobile_strings(struct char_data *t, struct char_data *f);
#if CONFIG_GENOLC_MOBPROG #if CONFIG_GENOLC_MOBPROG
int write_mobile_mobprog(mob_vnum mvnum, char_data *mob, FILE *fd); int write_mobile_mobprog(mob_vnum mvnum, struct char_data *mob, FILE *fd);
#endif #endif
/* Handy macros. */ /* Handy macros. */

View File

@@ -22,10 +22,10 @@
/* local functions */ /* local functions */
static int update_all_objects(obj_data *obj); static int update_all_objects(struct obj_data *obj);
static void copy_object_strings(obj_data *to, obj_data *from); static void copy_object_strings(struct obj_data *to, struct obj_data *from);
obj_rnum add_object(obj_data *newobj, obj_vnum ovnum) obj_rnum add_object(struct obj_data *newobj, obj_vnum ovnum)
{ {
int found = NOTHING; int found = NOTHING;
zone_rnum rznum = real_zone_by_thing(ovnum); zone_rnum rznum = real_zone_by_thing(ovnum);
@@ -48,9 +48,9 @@ obj_rnum add_object(obj_data *newobj, obj_vnum ovnum)
* and every object currently in the game to see which ones are pointing to * and every object currently in the game to see which ones are pointing to
* this prototype. If object is pointing to this prototype, then we need to * this prototype. If object is pointing to this prototype, then we need to
* replace it with the new one. */ * replace it with the new one. */
static int update_all_objects(obj_data *refobj) static int update_all_objects(struct obj_data *refobj)
{ {
obj_data *obj, swap; struct obj_data *obj, swap;
int count = 0; int count = 0;
for (obj = object_list; obj; obj = obj->next) { for (obj = object_list; obj; obj = obj->next) {
@@ -85,7 +85,7 @@ static int update_all_objects(obj_data *refobj)
obj_rnum adjust_objects(obj_rnum refpt) obj_rnum adjust_objects(obj_rnum refpt)
{ {
int shop, i, zone, cmd_no; int shop, i, zone, cmd_no;
obj_data *obj; struct obj_data *obj;
#if CIRCLE_UNSIGNED_INDEX #if CIRCLE_UNSIGNED_INDEX
if (refpt == NOTHING || refpt > top_of_objt) if (refpt == NOTHING || refpt > top_of_objt)
@@ -132,13 +132,13 @@ obj_rnum adjust_objects(obj_rnum refpt)
/* Function handle the insertion of an object within the prototype framework. /* Function handle the insertion of an object within the prototype framework.
* Note that this does not adjust internal values of other objects, use * Note that this does not adjust internal values of other objects, use
* add_object() for that. */ * add_object() for that. */
obj_rnum insert_object(obj_data *obj, obj_vnum ovnum) obj_rnum insert_object(struct obj_data *obj, obj_vnum ovnum)
{ {
obj_rnum i; obj_rnum i;
top_of_objt++; top_of_objt++;
RECREATE(obj_index, struct index_data, top_of_objt + 1); RECREATE(obj_index, struct index_data, top_of_objt + 1);
RECREATE(obj_proto, obj_data, top_of_objt + 1); RECREATE(obj_proto, struct obj_data, top_of_objt + 1);
/* Start counting through both tables. */ /* Start counting through both tables. */
for (i = top_of_objt; i > 0; i--) { for (i = top_of_objt; i > 0; i--) {
@@ -156,7 +156,7 @@ obj_rnum insert_object(obj_data *obj, obj_vnum ovnum)
return index_object(obj, ovnum, 0); return index_object(obj, ovnum, 0);
} }
obj_rnum index_object(obj_data *obj, obj_vnum ovnum, obj_rnum ornum) obj_rnum index_object(struct obj_data *obj, obj_vnum ovnum, obj_rnum ornum)
{ {
#if CIRCLE_UNSIGNED_INDEX #if CIRCLE_UNSIGNED_INDEX
if (obj == NULL || ornum == NOTHING || ornum > top_of_objt) if (obj == NULL || ornum == NOTHING || ornum > top_of_objt)
@@ -184,7 +184,7 @@ int save_objects(zone_rnum zone_num)
char pbuf1[MAX_STRING_LENGTH], pbuf2[MAX_STRING_LENGTH], pbuf3[MAX_STRING_LENGTH], pbuf4[MAX_STRING_LENGTH]; char pbuf1[MAX_STRING_LENGTH], pbuf2[MAX_STRING_LENGTH], pbuf3[MAX_STRING_LENGTH], pbuf4[MAX_STRING_LENGTH];
int counter, counter2, realcounter; int counter, counter2, realcounter;
FILE *fp; FILE *fp;
obj_data *obj; struct obj_data *obj;
struct extra_descr_data *ex_desc; struct extra_descr_data *ex_desc;
#if CIRCLE_UNSIGNED_INDEX #if CIRCLE_UNSIGNED_INDEX
@@ -299,7 +299,7 @@ int save_objects(zone_rnum zone_num)
} }
/* Free all, unconditionally. */ /* Free all, unconditionally. */
void free_object_strings(obj_data *obj) void free_object_strings(struct obj_data *obj)
{ {
if (obj->name) if (obj->name)
free(obj->name); free(obj->name);
@@ -314,7 +314,7 @@ void free_object_strings(obj_data *obj)
} }
/* For object instances that are not the prototype. */ /* For object instances that are not the prototype. */
void free_object_strings_proto(obj_data *obj) void free_object_strings_proto(struct obj_data *obj)
{ {
int robj_num = GET_OBJ_RNUM(obj); int robj_num = GET_OBJ_RNUM(obj);
@@ -349,7 +349,7 @@ void free_object_strings_proto(obj_data *obj)
} }
} }
static void copy_object_strings(obj_data *to, obj_data *from) static void copy_object_strings(struct obj_data *to, struct obj_data *from)
{ {
to->name = from->name ? strdup(from->name) : NULL; to->name = from->name ? strdup(from->name) : NULL;
to->description = from->description ? strdup(from->description) : NULL; to->description = from->description ? strdup(from->description) : NULL;
@@ -362,18 +362,18 @@ static void copy_object_strings(obj_data *to, obj_data *from)
to->ex_description = NULL; to->ex_description = NULL;
} }
int copy_object(obj_data *to, obj_data *from) int copy_object(struct obj_data *to, struct obj_data *from)
{ {
free_object_strings(to); free_object_strings(to);
return copy_object_main(to, from, TRUE); return copy_object_main(to, from, TRUE);
} }
int copy_object_preserve(obj_data *to, obj_data *from) int copy_object_preserve(struct obj_data *to, struct obj_data *from)
{ {
return copy_object_main(to, from, FALSE); return copy_object_main(to, from, FALSE);
} }
int copy_object_main(obj_data *to, obj_data *from, int free_object) int copy_object_main(struct obj_data *to, struct obj_data *from, int free_object)
{ {
*to = *from; *to = *from;
copy_object_strings(to, from); copy_object_strings(to, from);
@@ -384,7 +384,7 @@ int delete_object(obj_rnum rnum)
{ {
obj_rnum i; obj_rnum i;
zone_rnum zrnum; zone_rnum zrnum;
obj_data *obj, *tmp, *next_obj; struct obj_data *obj, *tmp, *next_obj;
int shop, j, zone, cmd_no; int shop, j, zone, cmd_no;
if (rnum == NOTHING || rnum > top_of_objt) if (rnum == NOTHING || rnum > top_of_objt)
@@ -404,7 +404,7 @@ int delete_object(obj_rnum rnum)
/* extract_obj() will just axe contents. */ /* extract_obj() will just axe contents. */
if (tmp->contains) { if (tmp->contains) {
obj_data *this_content, *next_content; struct obj_data *this_content, *next_content;
for (this_content = tmp->contains; this_content; this_content = next_content) { for (this_content = tmp->contains; this_content; this_content = next_content) {
next_content = this_content->next_content; next_content = this_content->next_content;
if (IN_ROOM(tmp)) { if (IN_ROOM(tmp)) {
@@ -442,7 +442,7 @@ int delete_object(obj_rnum rnum)
top_of_objt--; top_of_objt--;
RECREATE(obj_index, struct index_data, top_of_objt + 1); RECREATE(obj_index, struct index_data, top_of_objt + 1);
RECREATE(obj_proto, obj_data, top_of_objt + 1); RECREATE(obj_proto, struct obj_data, top_of_objt + 1);
/* Renumber notice boards. */ /* Renumber notice boards. */
for (j = 0; j < NUM_OF_BOARDS; j++) for (j = 0; j < NUM_OF_BOARDS; j++)
@@ -487,7 +487,7 @@ int delete_object(obj_rnum rnum)
} }
/* oset handling, this location should be temporary */ /* oset handling, this location should be temporary */
bool oset_alias(obj_data *obj, char * argument) bool oset_alias(struct obj_data *obj, char * argument)
{ {
static size_t max_len = 64; static size_t max_len = 64;
int i = GET_OBJ_RNUM(obj); int i = GET_OBJ_RNUM(obj);
@@ -505,7 +505,7 @@ bool oset_alias(obj_data *obj, char * argument)
return TRUE; return TRUE;
} }
bool oset_apply(obj_data *obj, char * argument) bool oset_apply(struct obj_data *obj, char * argument)
{ {
int i = 0, apply = -1, location = -1, mod = 0, empty = -1, value; int i = 0, apply = -1, location = -1, mod = 0, empty = -1, value;
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
@@ -558,7 +558,7 @@ bool oset_apply(obj_data *obj, char * argument)
return TRUE; return TRUE;
} }
bool oset_short_description(obj_data *obj, char * argument) bool oset_short_description(struct obj_data *obj, char * argument)
{ {
static size_t max_len = 64; static size_t max_len = 64;
int i = GET_OBJ_RNUM(obj); int i = GET_OBJ_RNUM(obj);
@@ -576,7 +576,7 @@ bool oset_short_description(obj_data *obj, char * argument)
return TRUE; return TRUE;
} }
bool oset_long_description(obj_data *obj, char * argument) bool oset_long_description(struct obj_data *obj, char * argument)
{ {
static size_t max_len = 128; static size_t max_len = 128;
int i = GET_OBJ_RNUM(obj); int i = GET_OBJ_RNUM(obj);

View File

@@ -12,20 +12,20 @@
#ifndef _GENOBJ_H_ #ifndef _GENOBJ_H_
#define _GENOBJ_H_ #define _GENOBJ_H_
void free_object_strings_proto(obj_data *obj); void free_object_strings_proto(struct obj_data *obj);
void free_object_strings(obj_data *obj); void free_object_strings(struct obj_data *obj);
int copy_object(obj_data *to, obj_data *from); int copy_object(struct obj_data *to, struct obj_data *from);
int copy_object_preserve(obj_data *to, obj_data *from); int copy_object_preserve(struct obj_data *to, struct obj_data *from);
int save_objects(zone_rnum vznum); int save_objects(zone_rnum vznum);
obj_rnum insert_object(obj_data *obj, obj_vnum ovnum); obj_rnum insert_object(struct obj_data *obj, obj_vnum ovnum);
obj_rnum adjust_objects(obj_rnum refpt); obj_rnum adjust_objects(obj_rnum refpt);
obj_rnum index_object(obj_data *obj, obj_vnum ovnum, obj_rnum ornum); obj_rnum index_object(struct obj_data *obj, obj_vnum ovnum, obj_rnum ornum);
obj_rnum add_object(obj_data *, obj_vnum ovnum); obj_rnum add_object(struct obj_data *, obj_vnum ovnum);
int copy_object_main(obj_data *to, obj_data *from, int free_object); int copy_object_main(struct obj_data *to, struct obj_data *from, int free_object);
int delete_object(obj_rnum); int delete_object(obj_rnum);
bool oset_alias(obj_data *obj, char * argument); bool oset_alias(struct obj_data *obj, char * argument);
bool oset_apply(obj_data *obj, char * argument); bool oset_apply(struct obj_data *obj, char * argument);
bool oset_short_description(obj_data *obj, char * argument); bool oset_short_description(struct obj_data *obj, char * argument);
bool oset_long_description(obj_data *obj, char * argument); bool oset_long_description(struct obj_data *obj, char * argument);
#endif /* _GENOBJ_H_ */ #endif /* _GENOBJ_H_ */

View File

@@ -60,11 +60,11 @@ static int export_save_zone(zone_rnum zrnum);
static int export_save_objects(zone_rnum zrnum); static int export_save_objects(zone_rnum zrnum);
static int export_save_rooms(zone_rnum zrnum); static int export_save_rooms(zone_rnum zrnum);
static int export_save_triggers(zone_rnum zrnum); static int export_save_triggers(zone_rnum zrnum);
static int export_mobile_record(mob_vnum mvnum, char_data *mob, FILE *fd); static int export_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd);
static void export_script_save_to_disk(FILE *fp, void *item, int type); static void export_script_save_to_disk(FILE *fp, void *item, int type);
static int export_info_file(zone_rnum zrnum); static int export_info_file(zone_rnum zrnum);
int genolc_checkstring(descriptor_data *d, char *arg) int genolc_checkstring(struct descriptor_data *d, char *arg)
{ {
smash_tilde(arg); smash_tilde(arg);
parse_at(arg); parse_at(arg);
@@ -330,7 +330,7 @@ ACMD(do_export_zone)
return; return;
} }
zvnum = atoidx(argument); zvnum = atoi(argument);
zrnum = real_zone(zvnum); zrnum = real_zone(zvnum);
if (zrnum == NOWHERE) { if (zrnum == NOWHERE) {
@@ -589,7 +589,7 @@ static int export_save_mobiles(zone_rnum rznum)
return TRUE; return TRUE;
} }
static int export_mobile_record(mob_vnum mvnum, char_data *mob, FILE *fd) static int export_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd)
{ {
char ldesc[MAX_STRING_LENGTH]; char ldesc[MAX_STRING_LENGTH];
@@ -774,7 +774,7 @@ static int export_save_objects(zone_rnum zrnum)
obj_vnum ovnum; obj_vnum ovnum;
int i; int i;
FILE *obj_file; FILE *obj_file;
obj_data *obj; struct obj_data *obj;
struct extra_descr_data *ex_desc; struct extra_descr_data *ex_desc;
if (!(obj_file = fopen("world/export/qq.obj", "w"))) { if (!(obj_file = fopen("world/export/qq.obj", "w"))) {
@@ -996,9 +996,9 @@ static void export_script_save_to_disk(FILE *fp, void *item, int type)
struct trig_proto_list *t; struct trig_proto_list *t;
if (type==MOB_TRIGGER) if (type==MOB_TRIGGER)
t = ((char_data *)item)->proto_script; t = ((struct char_data *)item)->proto_script;
else if (type==OBJ_TRIGGER) else if (type==OBJ_TRIGGER)
t = ((obj_data *)item)->proto_script; t = ((struct obj_data *)item)->proto_script;
else if (type==WLD_TRIGGER) else if (type==WLD_TRIGGER)
t = ((struct room_data *)item)->proto_script; t = ((struct room_data *)item)->proto_script;
else { else {

View File

@@ -15,7 +15,7 @@
#define STRING_TERMINATOR '~' #define STRING_TERMINATOR '~'
#define CONFIG_GENOLC_MOBPROG 0 #define CONFIG_GENOLC_MOBPROG 0
int genolc_checkstring(descriptor_data *d, char *arg); int genolc_checkstring(struct descriptor_data *d, char *arg);
int remove_from_save_list(zone_vnum, int type); int remove_from_save_list(zone_vnum, int type);
int add_to_save_list(zone_vnum, int type); int add_to_save_list(zone_vnum, int type);
int in_save_list(zone_vnum, int type); int in_save_list(zone_vnum, int type);

View File

@@ -24,8 +24,8 @@
* the description, title, and such. */ * the description, title, and such. */
room_rnum add_room(struct room_data *room) room_rnum add_room(struct room_data *room)
{ {
char_data *tch; struct char_data *tch;
obj_data *tobj; struct obj_data *tobj;
int j, found = FALSE; int j, found = FALSE;
room_rnum i; room_rnum i;
@@ -123,8 +123,8 @@ int delete_room(room_rnum rnum)
{ {
room_rnum i; room_rnum i;
int j; int j;
char_data *ppl, *next_ppl; struct char_data *ppl, *next_ppl;
obj_data *obj, *next_obj; struct obj_data *obj, *next_obj;
struct room_data *room; struct room_data *room;
if (rnum <= 0 || rnum > top_of_world) /* Can't delete void yet. */ if (rnum <= 0 || rnum > top_of_world) /* Can't delete void yet. */

View File

@@ -141,7 +141,7 @@ static int find_first_step(room_rnum src, room_rnum target)
ACMD(do_track) ACMD(do_track)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
char_data *vict; struct char_data *vict;
int dir; int dir;
/* The character must have the track skill. */ /* The character must have the track skill. */
@@ -195,11 +195,11 @@ ACMD(do_track)
} }
} }
void hunt_victim(char_data *ch) void hunt_victim(struct char_data *ch)
{ {
int dir; int dir;
byte found; byte found;
char_data *tmp; struct char_data *tmp;
if (!ch || !HUNTING(ch) || FIGHTING(ch)) if (!ch || !HUNTING(ch) || FIGHTING(ch))
return; return;

View File

@@ -15,6 +15,6 @@
#define _GRAPH_H_ #define _GRAPH_H_
ACMD(do_track); ACMD(do_track);
void hunt_victim(char_data *ch); void hunt_victim(struct char_data *ch);
#endif /* _GRAPH_H_*/ #endif /* _GRAPH_H_*/

View File

@@ -29,9 +29,9 @@
static int extractions_pending = 0; static int extractions_pending = 0;
/* local file scope functions */ /* local file scope functions */
static int apply_ac(char_data *ch, int eq_pos); static int apply_ac(struct char_data *ch, int eq_pos);
static void update_object(obj_data *obj, int use); static void update_object(struct obj_data *obj, int use);
static void affect_modify_ar(char_data * ch, byte loc, sbyte mod, int bitv[], bool add); static void affect_modify_ar(struct char_data * ch, byte loc, sbyte mod, int bitv[], bool add);
char *fname(const char *namelist) char *fname(const char *namelist)
{ {
@@ -105,7 +105,7 @@ int isname(const char *str, const char *namelist)
return 0; return 0;
} }
static void aff_apply_modify(char_data *ch, byte loc, sbyte mod, char *msg) static void aff_apply_modify(struct char_data *ch, byte loc, sbyte mod, char *msg)
{ {
switch (loc) { switch (loc) {
case APPLY_NONE: case APPLY_NONE:
@@ -205,7 +205,7 @@ static void aff_apply_modify(char_data *ch, byte loc, sbyte mod, char *msg)
} /* switch */ } /* switch */
} }
static void affect_modify_ar(char_data * ch, byte loc, sbyte mod, int bitv[], bool add) static void affect_modify_ar(struct char_data * ch, byte loc, sbyte mod, int bitv[], bool add)
{ {
int i , j; int i , j;
@@ -227,7 +227,7 @@ static void affect_modify_ar(char_data * ch, byte loc, sbyte mod, int bitv[], bo
/* This updates a character by subtracting everything he is affected by /* This updates a character by subtracting everything he is affected by
* restoring original abilities, and then affecting all again. */ * restoring original abilities, and then affecting all again. */
void affect_total(char_data *ch) void affect_total(struct char_data *ch)
{ {
struct affected_type *af; struct affected_type *af;
int i, j; int i, j;
@@ -279,7 +279,7 @@ void affect_total(char_data *ch)
/* Insert an affect_type in a char_data structure. Automatically sets /* Insert an affect_type in a char_data structure. Automatically sets
* apropriate bits and apply's */ * apropriate bits and apply's */
void affect_to_char(char_data *ch, struct affected_type *af) void affect_to_char(struct char_data *ch, struct affected_type *af)
{ {
struct affected_type *affected_alloc; struct affected_type *affected_alloc;
@@ -296,7 +296,7 @@ void affect_to_char(char_data *ch, struct affected_type *af)
/* Remove an affected_type structure from a char (called when duration reaches /* Remove an affected_type structure from a char (called when duration reaches
* zero). Pointer *af must never be NIL! Frees mem and calls * zero). Pointer *af must never be NIL! Frees mem and calls
* affect_location_apply */ * affect_location_apply */
void affect_remove(char_data *ch, struct affected_type *af) void affect_remove(struct char_data *ch, struct affected_type *af)
{ {
struct affected_type *temp; struct affected_type *temp;
@@ -312,7 +312,7 @@ void affect_remove(char_data *ch, struct affected_type *af)
} }
/* Call affect_remove with every affect from the spell "type" */ /* Call affect_remove with every affect from the spell "type" */
void affect_from_char(char_data *ch, int type) void affect_from_char(struct char_data *ch, int type)
{ {
struct affected_type *hjp, *next; struct affected_type *hjp, *next;
@@ -325,7 +325,7 @@ void affect_from_char(char_data *ch, int type)
/* Return TRUE if a char is affected by a spell (SPELL_XXX), FALSE indicates /* Return TRUE if a char is affected by a spell (SPELL_XXX), FALSE indicates
* not affected. */ * not affected. */
bool affected_by_spell(char_data *ch, int type) bool affected_by_spell(struct char_data *ch, int type)
{ {
struct affected_type *hjp; struct affected_type *hjp;
@@ -336,7 +336,7 @@ bool affected_by_spell(char_data *ch, int type)
return (FALSE); return (FALSE);
} }
void affect_join(char_data *ch, struct affected_type *af, void affect_join(struct char_data *ch, struct affected_type *af,
bool add_dur, bool avg_dur, bool add_mod, bool avg_mod) bool add_dur, bool avg_dur, bool add_mod, bool avg_mod)
{ {
struct affected_type *hjp, *next; struct affected_type *hjp, *next;
@@ -365,9 +365,9 @@ void affect_join(char_data *ch, struct affected_type *af,
} }
/* move a player out of a room */ /* move a player out of a room */
void char_from_room(char_data *ch) void char_from_room(struct char_data *ch)
{ {
char_data *temp; struct char_data *temp;
if (ch == NULL || IN_ROOM(ch) == NOWHERE) { if (ch == NULL || IN_ROOM(ch) == NOWHERE) {
log("SYSERR: NULL character or NOWHERE in %s, char_from_room", __FILE__); log("SYSERR: NULL character or NOWHERE in %s, char_from_room", __FILE__);
@@ -390,7 +390,7 @@ void char_from_room(char_data *ch)
} }
/* place a character in a room */ /* place a character in a room */
void char_to_room(char_data *ch, room_rnum room) void char_to_room(struct char_data *ch, room_rnum room)
{ {
if (ch == NULL || room == NOWHERE || room > top_of_world) if (ch == NULL || room == NOWHERE || room > top_of_world)
log("SYSERR: Illegal value(s) passed to char_to_room. (Room: %d/%d Ch: %p", log("SYSERR: Illegal value(s) passed to char_to_room. (Room: %d/%d Ch: %p",
@@ -417,7 +417,7 @@ void char_to_room(char_data *ch, room_rnum room)
} }
/* Give an object to a char. */ /* Give an object to a char. */
void obj_to_char(obj_data *object, char_data *ch) void obj_to_char(struct obj_data *object, struct char_data *ch)
{ {
if (object && ch) { if (object && ch) {
object->next_content = ch->carrying; object->next_content = ch->carrying;
@@ -437,9 +437,9 @@ void obj_to_char(obj_data *object, char_data *ch)
} }
/* take an object from a char */ /* take an object from a char */
void obj_from_char(obj_data *object) void obj_from_char(struct obj_data *object)
{ {
obj_data *temp; struct obj_data *temp;
if (object == NULL) { if (object == NULL) {
log("SYSERR: NULL object passed to obj_from_char."); log("SYSERR: NULL object passed to obj_from_char.");
@@ -458,7 +458,7 @@ void obj_from_char(obj_data *object)
} }
/* Return the effect of a piece of armor in position eq_pos */ /* Return the effect of a piece of armor in position eq_pos */
static int apply_ac(char_data *ch, int eq_pos) static int apply_ac(struct char_data *ch, int eq_pos)
{ {
int factor; int factor;
@@ -489,7 +489,7 @@ static int apply_ac(char_data *ch, int eq_pos)
return (factor * GET_OBJ_VAL(GET_EQ(ch, eq_pos), 0)); return (factor * GET_OBJ_VAL(GET_EQ(ch, eq_pos), 0));
} }
int invalid_align(char_data *ch, obj_data *obj) int invalid_align(struct char_data *ch, struct obj_data *obj)
{ {
if (OBJ_FLAGGED(obj, ITEM_ANTI_EVIL) && IS_EVIL(ch)) if (OBJ_FLAGGED(obj, ITEM_ANTI_EVIL) && IS_EVIL(ch))
return TRUE; return TRUE;
@@ -500,7 +500,7 @@ int invalid_align(char_data *ch, obj_data *obj)
return FALSE; return FALSE;
} }
void equip_char(char_data *ch, obj_data *obj, int pos) void equip_char(struct char_data *ch, struct obj_data *obj, int pos)
{ {
int j; int j;
@@ -552,10 +552,10 @@ void equip_char(char_data *ch, obj_data *obj, int pos)
affect_total(ch); affect_total(ch);
} }
obj_data *unequip_char(char_data *ch, int pos) struct obj_data *unequip_char(struct char_data *ch, int pos)
{ {
int j; int j;
obj_data *obj; struct obj_data *obj;
if ((pos < 0 || pos >= NUM_WEARS) || GET_EQ(ch, pos) == NULL) { if ((pos < 0 || pos >= NUM_WEARS) || GET_EQ(ch, pos) == NULL) {
core_dump(); core_dump();
@@ -611,9 +611,9 @@ int get_number(char **name)
} }
/* Search a given list for an object number, and return a ptr to that obj */ /* Search a given list for an object number, and return a ptr to that obj */
obj_data *get_obj_in_list_num(int num, obj_data *list) struct obj_data *get_obj_in_list_num(int num, struct obj_data *list)
{ {
obj_data *i; struct obj_data *i;
for (i = list; i; i = i->next_content) for (i = list; i; i = i->next_content)
if (GET_OBJ_RNUM(i) == num) if (GET_OBJ_RNUM(i) == num)
@@ -623,9 +623,9 @@ obj_data *get_obj_in_list_num(int num, obj_data *list)
} }
/* search the entire world for an object number, and return a pointer */ /* search the entire world for an object number, and return a pointer */
obj_data *get_obj_num(obj_rnum nr) struct obj_data *get_obj_num(obj_rnum nr)
{ {
obj_data *i; struct obj_data *i;
for (i = object_list; i; i = i->next) for (i = object_list; i; i = i->next)
if (GET_OBJ_RNUM(i) == nr) if (GET_OBJ_RNUM(i) == nr)
@@ -635,9 +635,9 @@ obj_data *get_obj_num(obj_rnum nr)
} }
/* search a room for a char, and return a pointer if found.. */ /* search a room for a char, and return a pointer if found.. */
char_data *get_char_room(char *name, int *number, room_rnum room) struct char_data *get_char_room(char *name, int *number, room_rnum room)
{ {
char_data *i; struct char_data *i;
int num; int num;
if (!number) { if (!number) {
@@ -657,9 +657,9 @@ char_data *get_char_room(char *name, int *number, room_rnum room)
} }
/* search all over the world for a char num, and return a pointer if found */ /* search all over the world for a char num, and return a pointer if found */
char_data *get_char_num(mob_rnum nr) struct char_data *get_char_num(mob_rnum nr)
{ {
char_data *i; struct char_data *i;
for (i = character_list; i; i = i->next) for (i = character_list; i; i = i->next)
if (GET_MOB_RNUM(i) == nr) if (GET_MOB_RNUM(i) == nr)
@@ -669,7 +669,7 @@ char_data *get_char_num(mob_rnum nr)
} }
/* put an object in a room */ /* put an object in a room */
void obj_to_room(obj_data *object, room_rnum room) void obj_to_room(struct obj_data *object, room_rnum room)
{ {
if (!object || room == NOWHERE || room > top_of_world){ if (!object || room == NOWHERE || room > top_of_world){
log("SYSERR: Illegal value(s) passed to obj_to_room. (Room #%d/%d, obj %p)", log("SYSERR: Illegal value(s) passed to obj_to_room. (Room #%d/%d, obj %p)",
@@ -680,7 +680,7 @@ void obj_to_room(obj_data *object, room_rnum room)
world[room].contents = object; // add object to list world[room].contents = object; // add object to list
} }
else { else {
obj_data *i = world[room].contents; // define a temporary pointer struct obj_data *i = world[room].contents; // define a temporary pointer
while (i->next_content != NULL) i = i->next_content; // find the first without a next_content while (i->next_content != NULL) i = i->next_content; // find the first without a next_content
i->next_content = object; // add object at the end i->next_content = object; // add object at the end
} }
@@ -693,10 +693,10 @@ void obj_to_room(obj_data *object, room_rnum room)
} }
/* Take an object from a room */ /* Take an object from a room */
void obj_from_room(obj_data *object) void obj_from_room(struct obj_data *object)
{ {
obj_data *temp; struct obj_data *temp;
char_data *t, *tempch; struct char_data *t, *tempch;
if (!object || IN_ROOM(object) == NOWHERE) { if (!object || IN_ROOM(object) == NOWHERE) {
log("SYSERR: NULL object (%p) or obj not in a room (%d) passed to obj_from_room", log("SYSERR: NULL object (%p) or obj not in a room (%d) passed to obj_from_room",
@@ -722,9 +722,9 @@ void obj_from_room(obj_data *object)
} }
/* put an object in an object (quaint) */ /* put an object in an object (quaint) */
void obj_to_obj(obj_data *obj, obj_data *obj_to) void obj_to_obj(struct obj_data *obj, struct obj_data *obj_to)
{ {
obj_data *tmp_obj; struct obj_data *tmp_obj;
if (!obj || !obj_to || obj == obj_to) { if (!obj || !obj_to || obj == obj_to) {
log("SYSERR: NULL object (%p) or same source (%p) and target (%p) obj passed to obj_to_obj.", log("SYSERR: NULL object (%p) or same source (%p) and target (%p) obj passed to obj_to_obj.",
@@ -749,9 +749,9 @@ void obj_to_obj(obj_data *obj, obj_data *obj_to)
} }
/* remove an object from an object */ /* remove an object from an object */
void obj_from_obj(obj_data *obj) void obj_from_obj(struct obj_data *obj)
{ {
obj_data *temp, *obj_from; struct obj_data *temp, *obj_from;
if (obj->in_obj == NULL) { if (obj->in_obj == NULL) {
log("SYSERR: (%s): trying to illegally extract obj from obj.", __FILE__); log("SYSERR: (%s): trying to illegally extract obj from obj.", __FILE__);
@@ -775,7 +775,7 @@ void obj_from_obj(obj_data *obj)
} }
/* Set all carried_by to point to new owner */ /* Set all carried_by to point to new owner */
void object_list_new_owner(obj_data *list, char_data *ch) void object_list_new_owner(struct obj_data *list, struct char_data *ch)
{ {
if (list) { if (list) {
object_list_new_owner(list->contains, ch); object_list_new_owner(list->contains, ch);
@@ -785,10 +785,10 @@ void object_list_new_owner(obj_data *list, char_data *ch)
} }
/* Extract an object from the world */ /* Extract an object from the world */
void extract_obj(obj_data *obj) void extract_obj(struct obj_data *obj)
{ {
char_data *ch, *next = NULL; struct char_data *ch, *next = NULL;
obj_data *temp; struct obj_data *temp;
if (obj->worn_by != NULL) if (obj->worn_by != NULL)
if (unequip_char(obj->worn_by, obj->worn_on) != obj) if (unequip_char(obj->worn_by, obj->worn_on) != obj)
@@ -840,7 +840,7 @@ void extract_obj(obj_data *obj)
free_obj(obj); free_obj(obj);
} }
static void update_object(obj_data *obj, int use) static void update_object(struct obj_data *obj, int use)
{ {
/* dont update objects with a timer trigger */ /* dont update objects with a timer trigger */
if (!SCRIPT_CHECK(obj, OTRIG_TIMER) && (GET_OBJ_TIMER(obj) > 0)) if (!SCRIPT_CHECK(obj, OTRIG_TIMER) && (GET_OBJ_TIMER(obj) > 0))
@@ -851,7 +851,7 @@ static void update_object(obj_data *obj, int use)
update_object(obj->next_content, use); update_object(obj->next_content, use);
} }
void update_char_objects(char_data *ch) void update_char_objects(struct char_data *ch)
{ {
int i; int i;
@@ -878,11 +878,11 @@ void update_char_objects(char_data *ch)
} }
/* Extract a ch completely from the world, and leave his stuff behind */ /* Extract a ch completely from the world, and leave his stuff behind */
void extract_char_final(char_data *ch) void extract_char_final(struct char_data *ch)
{ {
char_data *k, *temp; struct char_data *k, *temp;
descriptor_data *d; struct descriptor_data *d;
obj_data *obj; struct obj_data *obj;
int i; int i;
if (IN_ROOM(ch) == NOWHERE) { if (IN_ROOM(ch) == NOWHERE) {
@@ -1001,7 +1001,7 @@ void extract_char_final(char_data *ch)
* Fixed a bug where it would over-count extractions if you try to extract the * Fixed a bug where it would over-count extractions if you try to extract the
* same character twice (e.g. double-purging in a script) -khufu / EmpireMUD * same character twice (e.g. double-purging in a script) -khufu / EmpireMUD
*/ */
void extract_char(char_data *ch) void extract_char(struct char_data *ch)
{ {
char_from_furniture(ch); char_from_furniture(ch);
clear_char_event_list(ch); clear_char_event_list(ch);
@@ -1022,7 +1022,7 @@ void extract_char(char_data *ch)
* confusing some code. -gg This doesn't handle recursive extractions. */ * confusing some code. -gg This doesn't handle recursive extractions. */
void extract_pending_chars(void) void extract_pending_chars(void)
{ {
char_data *vict, *next_vict, *prev_vict; struct char_data *vict, *next_vict, *prev_vict;
if (extractions_pending < 0) if (extractions_pending < 0)
log("SYSERR: Negative (%d) extractions pending.", extractions_pending); log("SYSERR: Negative (%d) extractions pending.", extractions_pending);
@@ -1057,9 +1057,9 @@ void extract_pending_chars(void)
/* Here follows high-level versions of some earlier routines, ie functions /* Here follows high-level versions of some earlier routines, ie functions
* which incorporate the actual player-data */ * which incorporate the actual player-data */
char_data *get_player_vis(char_data *ch, char *name, int *number, int inroom) struct char_data *get_player_vis(struct char_data *ch, char *name, int *number, int inroom)
{ {
char_data *i; struct char_data *i;
int num; int num;
if (!number) { if (!number) {
@@ -1084,9 +1084,9 @@ char_data *get_player_vis(char_data *ch, char *name, int *number, int inroom)
return (NULL); return (NULL);
} }
char_data *get_char_room_vis(char_data *ch, char *name, int *number) struct char_data *get_char_room_vis(struct char_data *ch, char *name, int *number)
{ {
char_data *i; struct char_data *i;
int num; int num;
if (!number) { if (!number) {
@@ -1111,9 +1111,9 @@ char_data *get_char_room_vis(char_data *ch, char *name, int *number)
return (NULL); return (NULL);
} }
char_data *get_char_world_vis(char_data *ch, char *name, int *number) struct char_data *get_char_world_vis(struct char_data *ch, char *name, int *number)
{ {
char_data *i; struct char_data *i;
int num; int num;
if (!number) { if (!number) {
@@ -1142,7 +1142,7 @@ char_data *get_char_world_vis(char_data *ch, char *name, int *number)
return (NULL); return (NULL);
} }
char_data *get_char_vis(char_data *ch, char *name, int *number, int where) struct char_data *get_char_vis(struct char_data *ch, char *name, int *number, int where)
{ {
if (where == FIND_CHAR_ROOM) if (where == FIND_CHAR_ROOM)
return get_char_room_vis(ch, name, number); return get_char_room_vis(ch, name, number);
@@ -1152,9 +1152,9 @@ char_data *get_char_vis(char_data *ch, char *name, int *number, int where)
return (NULL); return (NULL);
} }
obj_data *get_obj_in_list_vis(char_data *ch, char *name, int *number, obj_data *list) struct obj_data *get_obj_in_list_vis(struct char_data *ch, char *name, int *number, struct obj_data *list)
{ {
obj_data *i; struct obj_data *i;
int num; int num;
if (!number) { if (!number) {
@@ -1175,9 +1175,9 @@ obj_data *get_obj_in_list_vis(char_data *ch, char *name, int *number, obj_data *
} }
/* search the entire world for an object, and return a pointer */ /* search the entire world for an object, and return a pointer */
obj_data *get_obj_vis(char_data *ch, char *name, int *number) struct obj_data *get_obj_vis(struct char_data *ch, char *name, int *number)
{ {
obj_data *i; struct obj_data *i;
int num; int num;
if (!number) { if (!number) {
@@ -1206,7 +1206,7 @@ obj_data *get_obj_vis(char_data *ch, char *name, int *number)
return (NULL); return (NULL);
} }
obj_data *get_obj_in_equip_vis(char_data *ch, char *arg, int *number, obj_data *equipment[]) struct obj_data *get_obj_in_equip_vis(struct char_data *ch, char *arg, int *number, struct obj_data *equipment[])
{ {
int j, num; int j, num;
@@ -1226,7 +1226,7 @@ obj_data *get_obj_in_equip_vis(char_data *ch, char *arg, int *number, obj_data *
return (NULL); return (NULL);
} }
int get_obj_pos_in_equip_vis(char_data *ch, char *arg, int *number, obj_data *equipment[]) int get_obj_pos_in_equip_vis(struct char_data *ch, char *arg, int *number, struct obj_data *equipment[])
{ {
int j, num; int j, num;
@@ -1282,9 +1282,9 @@ const char *money_desc(int amount)
return ("an absolutely colossal mountain of gold coins"); return ("an absolutely colossal mountain of gold coins");
} }
obj_data *create_money(int amount) struct obj_data *create_money(int amount)
{ {
obj_data *obj; struct obj_data *obj;
struct extra_descr_data *new_descr; struct extra_descr_data *new_descr;
char buf[200]; char buf[200];
int y; int y;
@@ -1350,8 +1350,8 @@ obj_data *create_money(int amount)
* The routine used to return a pointer to the next word in *arg (just * The routine used to return a pointer to the next word in *arg (just
* like the one_argument routine), but now it returns an integer that * like the one_argument routine), but now it returns an integer that
* describes what it filled in. */ * describes what it filled in. */
int generic_find(char *arg, bitvector_t bitvector, char_data *ch, int generic_find(char *arg, bitvector_t bitvector, struct char_data *ch,
char_data **tar_ch, obj_data **tar_obj) struct char_data **tar_ch, struct obj_data **tar_obj)
{ {
int i, found, number; int i, found, number;
char name_val[MAX_INPUT_LENGTH]; char name_val[MAX_INPUT_LENGTH];
@@ -1418,7 +1418,7 @@ int find_all_dots(char *arg)
} }
/* Group Handlers */ /* Group Handlers */
struct group_data * create_group(char_data * leader) struct group_data * create_group(struct char_data * leader)
{ {
struct group_data * new_group; struct group_data * new_group;
@@ -1445,11 +1445,11 @@ struct group_data * create_group(char_data * leader)
void free_group(struct group_data * group) void free_group(struct group_data * group)
{ {
char_data *tch; struct char_data *tch;
struct iterator_data Iterator; struct iterator_data Iterator;
if (group->members->iSize) { if (group->members->iSize) {
for (tch = (char_data *) merge_iterator(&Iterator, group->members); for (tch = (struct char_data *) merge_iterator(&Iterator, group->members);
tch; tch;
tch = next_in_list(&Iterator)) tch = next_in_list(&Iterator))
leave_group(tch); leave_group(tch);
@@ -1462,10 +1462,10 @@ void free_group(struct group_data * group)
free(group); free(group);
} }
void leave_group(char_data *ch) void leave_group(struct char_data *ch)
{ {
struct group_data *group; struct group_data *group;
char_data *tch; struct char_data *tch;
struct iterator_data Iterator; struct iterator_data Iterator;
bool found_pc = FALSE; bool found_pc = FALSE;
@@ -1478,7 +1478,7 @@ void leave_group(char_data *ch)
ch->group = NULL; ch->group = NULL;
if (group->members->iSize) { if (group->members->iSize) {
for (tch = (char_data *) merge_iterator(&Iterator, group->members); for (tch = (struct char_data *) merge_iterator(&Iterator, group->members);
tch; tch = next_in_list(&Iterator)) tch; tch = next_in_list(&Iterator))
if (!IS_NPC(tch)) if (!IS_NPC(tch))
found_pc = TRUE; found_pc = TRUE;
@@ -1490,13 +1490,13 @@ void leave_group(char_data *ch)
SET_BIT(GROUP_FLAGS(group), GROUP_NPC); SET_BIT(GROUP_FLAGS(group), GROUP_NPC);
if (GROUP_LEADER(group) == ch && group->members->iSize) { if (GROUP_LEADER(group) == ch && group->members->iSize) {
group->leader = (char_data *) random_from_list(group->members); group->leader = (struct char_data *) random_from_list(group->members);
send_to_group(NULL, group, "%s has assumed leadership of the group.\r\n", GET_NAME(GROUP_LEADER(group))); send_to_group(NULL, group, "%s has assumed leadership of the group.\r\n", GET_NAME(GROUP_LEADER(group)));
} else if (group->members->iSize == 0) } else if (group->members->iSize == 0)
free_group(group); free_group(group);
} }
void join_group(char_data *ch, struct group_data *group) void join_group(struct char_data *ch, struct group_data *group)
{ {
add_to_list(ch, group->members); add_to_list(ch, group->members);

View File

@@ -13,61 +13,62 @@
#define _HANDLER_H_ #define _HANDLER_H_
/* handling the affected-structures */ /* handling the affected-structures */
void affect_total(char_data *ch); void affect_total(struct char_data *ch);
void affect_to_char(char_data *ch, struct affected_type *af); void affect_to_char(struct char_data *ch, struct affected_type *af);
void affect_remove(char_data *ch, struct affected_type *af); void affect_remove(struct char_data *ch, struct affected_type *af);
void affect_from_char(char_data *ch, int type); void affect_from_char(struct char_data *ch, int type);
bool affected_by_spell(char_data *ch, int type); bool affected_by_spell(struct char_data *ch, int type);
void affect_join(char_data *ch, struct affected_type *af, bool add_dur, bool avg_dur, bool add_mod, bool avg_mod); void affect_join(struct char_data *ch, struct affected_type *af,
bool add_dur, bool avg_dur, bool add_mod, bool avg_mod);
/* utility */ /* utility */
const char *money_desc(int amount); const char *money_desc(int amount);
obj_data *create_money(int amount); struct obj_data *create_money(int amount);
int isname(const char *str, const char *namelist); int isname(const char *str, const char *namelist);
int is_name(const char *str, const char *namelist); int is_name(const char *str, const char *namelist);
char *fname(const char *namelist); char *fname(const char *namelist);
int get_number(char **name); int get_number(char **name);
/* objects */ /* objects */
void obj_to_char(obj_data *object, char_data *ch); void obj_to_char(struct obj_data *object, struct char_data *ch);
void obj_from_char(obj_data *object); void obj_from_char(struct obj_data *object);
void equip_char(char_data *ch, obj_data *obj, int pos); void equip_char(struct char_data *ch, struct obj_data *obj, int pos);
obj_data *unequip_char(char_data *ch, int pos); struct obj_data *unequip_char(struct char_data *ch, int pos);
int invalid_align(char_data *ch, obj_data *obj); int invalid_align(struct char_data *ch, struct obj_data *obj);
void obj_to_room(obj_data *object, room_rnum room); void obj_to_room(struct obj_data *object, room_rnum room);
void obj_from_room(obj_data *object); void obj_from_room(struct obj_data *object);
void obj_to_obj(obj_data *obj, obj_data *obj_to); void obj_to_obj(struct obj_data *obj, struct obj_data *obj_to);
void obj_from_obj(obj_data *obj); void obj_from_obj(struct obj_data *obj);
void object_list_new_owner(obj_data *list, char_data *ch); void object_list_new_owner(struct obj_data *list, struct char_data *ch);
void extract_obj(obj_data *obj); void extract_obj(struct obj_data *obj);
void update_char_objects(char_data *ch); void update_char_objects(struct char_data *ch);
/* characters*/ /* characters*/
char_data *get_char_room(char *name, int *num, room_rnum room); struct char_data *get_char_room(char *name, int *num, room_rnum room);
char_data *get_char_num(mob_rnum nr); struct char_data *get_char_num(mob_rnum nr);
void char_from_room(char_data *ch); void char_from_room(struct char_data *ch);
void char_to_room(char_data *ch, room_rnum room); void char_to_room(struct char_data *ch, room_rnum room);
void extract_char(char_data *ch); void extract_char(struct char_data *ch);
void extract_char_final(char_data *ch); void extract_char_final(struct char_data *ch);
void extract_pending_chars(void); void extract_pending_chars(void);
/* find if character can see */ /* find if character can see */
char_data *get_player_vis(char_data *ch, char *name, int *number, int inroom); struct char_data *get_player_vis(struct char_data *ch, char *name, int *number, int inroom);
char_data *get_char_vis(char_data *ch, char *name, int *number, int where); struct char_data *get_char_vis(struct char_data *ch, char *name, int *number, int where);
char_data *get_char_room_vis(char_data *ch, char *name, int *number); struct char_data *get_char_room_vis(struct char_data *ch, char *name, int *number);
char_data *get_char_world_vis(char_data *ch, char *name, int *number); struct char_data *get_char_world_vis(struct char_data *ch, char *name, int *number);
obj_data *get_obj_in_list_num(int num, obj_data *list); struct obj_data *get_obj_in_list_num(int num, struct obj_data *list);
obj_data *get_obj_num(obj_rnum nr); struct obj_data *get_obj_num(obj_rnum nr);
obj_data *get_obj_in_list_vis(char_data *ch, char *name, int *number, obj_data *list); struct obj_data *get_obj_in_list_vis(struct char_data *ch, char *name, int *number, struct obj_data *list);
obj_data *get_obj_vis(char_data *ch, char *name, int *num); struct obj_data *get_obj_vis(struct char_data *ch, char *name, int *num);
obj_data *get_obj_in_equip_vis(char_data *ch, char *arg, int *number, obj_data *equipment[]); struct obj_data *get_obj_in_equip_vis(struct char_data *ch, char *arg, int *number, struct obj_data *equipment[]);
int get_obj_pos_in_equip_vis(char_data *ch, char *arg, int *num, obj_data *equipment[]); int get_obj_pos_in_equip_vis(struct char_data *ch, char *arg, int *num, struct obj_data *equipment[]);
/* find all dots */ /* find all dots */
int find_all_dots(char *arg); int find_all_dots(char *arg);
@@ -77,13 +78,14 @@ int find_all_dots(char *arg);
#define FIND_ALLDOT 2 #define FIND_ALLDOT 2
/* group */ /* group */
struct group_data * create_group(char_data * leader); struct group_data * create_group(struct char_data * leader);
void free_group(struct group_data * group); void free_group(struct group_data * group);
void leave_group(char_data *ch); void leave_group(struct char_data *ch);
void join_group(char_data *ch, struct group_data *group); void join_group(struct char_data *ch, struct group_data *group);
/* Generic Find */ /* Generic Find */
int generic_find(char *arg, bitvector_t bitvector, char_data *ch, char_data **tar_ch, obj_data **tar_obj); int generic_find(char *arg, bitvector_t bitvector, struct char_data *ch,
struct char_data **tar_ch, struct obj_data **tar_obj);
#define FIND_CHAR_ROOM (1 << 0) #define FIND_CHAR_ROOM (1 << 0)
#define FIND_CHAR_WORLD (1 << 1) #define FIND_CHAR_WORLD (1 << 1)
@@ -94,10 +96,10 @@ int generic_find(char *arg, bitvector_t bitvector, char_data *ch, char_data **ta
/* prototypes from mobact.c */ /* prototypes from mobact.c */
void forget(char_data *ch, char_data *victim); void forget(struct char_data *ch, struct char_data *victim);
void remember(char_data *ch, char_data *victim); void remember(struct char_data *ch, struct char_data *victim);
void mobile_activity(void); void mobile_activity(void);
void clearMemory(char_data *ch); void clearMemory(struct char_data *ch);
/* For new last command: */ /* For new last command: */
@@ -125,7 +127,7 @@ struct last_entry {
int punique; int punique;
}; };
void add_llog_entry(char_data *ch, int type); void add_llog_entry(struct char_data *ch, int type);
struct last_entry *find_llog_entry(int punique, long idnum); struct last_entry *find_llog_entry(int punique, long idnum);
#endif /* _HANDLER_H_ */ #endif /* _HANDLER_H_ */

View File

@@ -26,17 +26,17 @@
#include "modify.h" #include "modify.h"
/* local functions */ /* local functions */
static void hedit_disp_menu(descriptor_data *); static void hedit_disp_menu(struct descriptor_data *);
static void hedit_setup_new(descriptor_data *); static void hedit_setup_new(struct descriptor_data *);
static void hedit_setup_existing(descriptor_data *, int); static void hedit_setup_existing(struct descriptor_data *, int);
static void hedit_save_to_disk(descriptor_data *); static void hedit_save_to_disk(struct descriptor_data *);
static void hedit_save_internally(descriptor_data *); static void hedit_save_internally(struct descriptor_data *);
ACMD(do_oasis_hedit) ACMD(do_oasis_hedit)
{ {
char arg[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH];
descriptor_data *d; struct descriptor_data *d;
int i; int i;
/* No building as a mob or while being forced. */ /* No building as a mob or while being forced. */
@@ -107,7 +107,7 @@ ACMD(do_oasis_hedit)
TRUE, "OLC: %s starts editing help files.", GET_NAME(d->character)); TRUE, "OLC: %s starts editing help files.", GET_NAME(d->character));
} }
static void hedit_setup_new(descriptor_data *d) static void hedit_setup_new(struct descriptor_data *d)
{ {
CREATE(OLC_HELP(d), struct help_index_element, 1); CREATE(OLC_HELP(d), struct help_index_element, 1);
@@ -120,7 +120,7 @@ static void hedit_setup_new(descriptor_data *d)
hedit_disp_menu(d); hedit_disp_menu(d);
} }
static void hedit_setup_existing(descriptor_data *d, int rnum) static void hedit_setup_existing(struct descriptor_data *d, int rnum)
{ {
CREATE(OLC_HELP(d), struct help_index_element, 1); CREATE(OLC_HELP(d), struct help_index_element, 1);
@@ -133,7 +133,7 @@ static void hedit_setup_existing(descriptor_data *d, int rnum)
hedit_disp_menu(d); hedit_disp_menu(d);
} }
static void hedit_save_internally(descriptor_data *d) static void hedit_save_internally(struct descriptor_data *d)
{ {
struct help_index_element *new_help_table = NULL; struct help_index_element *new_help_table = NULL;
@@ -154,7 +154,7 @@ static void hedit_save_internally(descriptor_data *d)
hedit_save_to_disk(d); hedit_save_to_disk(d);
} }
static void hedit_save_to_disk(descriptor_data *d) static void hedit_save_to_disk(struct descriptor_data *d)
{ {
FILE *fp; FILE *fp;
char buf1[MAX_STRING_LENGTH], index_name[READ_SIZE]; char buf1[MAX_STRING_LENGTH], index_name[READ_SIZE];
@@ -187,7 +187,7 @@ static void hedit_save_to_disk(descriptor_data *d)
} }
/* The main menu. */ /* The main menu. */
static void hedit_disp_menu(descriptor_data *d) static void hedit_disp_menu(struct descriptor_data *d)
{ {
get_char_colors(d->character); get_char_colors(d->character);
@@ -205,7 +205,7 @@ static void hedit_disp_menu(descriptor_data *d)
OLC_MODE(d) = HEDIT_MAIN_MENU; OLC_MODE(d) = HEDIT_MAIN_MENU;
} }
void hedit_parse(descriptor_data *d, char *arg) void hedit_parse(struct descriptor_data *d, char *arg)
{ {
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
char *oldtext = ""; char *oldtext = "";
@@ -357,7 +357,7 @@ void hedit_parse(descriptor_data *d, char *arg)
hedit_disp_menu(d); hedit_disp_menu(d);
} }
void hedit_string_cleanup(descriptor_data *d, int terminator) void hedit_string_cleanup(struct descriptor_data *d, int terminator)
{ {
switch (OLC_MODE(d)) { switch (OLC_MODE(d)) {
case HEDIT_ENTRY: case HEDIT_ENTRY:

Some files were not shown because too many files have changed in this diff Show More