Remove hitroll/damroll

This commit is contained in:
kinther 2025-09-30 07:00:54 -07:00
parent 874422ac0b
commit cb59bf0315
35 changed files with 133 additions and 3636 deletions

View file

@ -9,8 +9,7 @@ eyes have a bluish-tint to them with a small amount of green. One might call
his stature bulky, as he has quite a bit of muscle.
~
2122 0 0 0 0 0 0 0 0 E
1 20 1 3d20+40 1d1+0
0 0
1 3d20+40 1d1
8 8 1
Str: 16
Dex: 14
@ -39,8 +38,7 @@ dark hair has been pulled back behind her head, intensifying the sharpness of
her nose.
~
2122 0 0 0 0 0 0 0 0 E
0 20 10 3d20+40 1d1+0
0 0
0 3d20+40 1d1
8 8 2
Str: 14
Dex: 18
@ -69,8 +67,7 @@ hands are marred with minor cuts and scars from years of working in service to
others.
~
10 0 0 0 0 0 0 0 0 E
1 20 10 3d12+60 1d1+0
0 0
1 3d12+60 1d1
8 8 1
Str: 18
Int: 12

View file

@ -1,608 +0,0 @@
#3000
wizard~
the wizard~
A wizard walks around behind the counter, talking to himself.
~
The wizard looks old and senile, and yet he looks like a very powerful
wizard. He is equipped with fine clothing, and is wearing many fine rings and
bracelets.
~
26635 0 0 0 16 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3001
baker~
the baker~
The baker looks at you calmly, wiping flour from his face with one hand.
~
A fat, nice looking baker. But you can see that he has many scars on his
body.
~
26635 0 0 0 16 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3002
grocer~
the grocer~
A grocer stands at the counter, with a slightly impatient look on his face.
~
A tall grocer, who moves two 200 pounds bag of flour around on his shoulders.
~
26635 0 0 0 16 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3003
weaponsmith~
the weaponsmith~
A weaponsmith is standing here.
~
He is a young weaponsmith, who still has lots to learn but he is still eager
to sell you his latest implements of carnage and destruction.
~
26635 0 0 0 16 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3004
armorer~
the armorer~
An armorer stands here displaying his new (and previously owned) armors.
~
An old but very strong armorer. He has made more suits of armor in his
life than you have ever seen.
~
26635 0 0 0 16 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3005
receptionists~
the receptionist~
A receptionist is standing behind the counter here, smiling at you.
~
You notice a tired look in her face. She looks like she isn't paid well
enough to put up with any crap from mud players with attitudes.
~
59419 0 0 0 65616 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 2
E
#3006
captain stolar~
Captain Stolar~
A retired captain stands here, selling boats.
~
This captain has eaten more sharks than you have killed peas.
~
26635 0 0 0 16 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3007
sailor~
the sailor~
A sailor stands here, waiting to help you.
~
He looks like a strong, fit sailor.
~
26634 0 0 0 0 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3008
uncle juan~
Uncle Juan~
Uncle Juan is here ready to take your order.
~
He looks like he may or may not have a green card.
~
26635 0 0 0 0 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3009
wally watermaster~
Wally the Watermaster~
Wally the Watermaster is standing behind the counter.
~
Wally is a bit pudgy but looks very strong. He has a glass of Midgaard
Natural Spring Water in his hand. When he notices you, he proudly displays his
fine collection of contemporary waters.
~
26635 0 0 0 16 0 0 0 800 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3010
postmasters~
the postmaster~
The head postmaster is standing here, waiting to help you with your mail.
~
The Postmaster seems like a happy old man, though a bit sluggish. He worries
about the reputation of the MMS (Midgaard Mail Service), as many people seem to
think that it is slow. Perhaps if he were to brush the cobwebs from his uniform
it would help to make a better impression.
~
518154 0 0 0 65552 0 0 0 1000 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3011
travelling saleswoman woman~
the travelling saleswoman~
This saleswoman is laden with gadgets and gizmos that are outrageously priced.
~
A combination of good business sense, charming personality, and good looks
has made her a success at pushing useless products on uneducated buyers. Only
on a rare occasion does she sell anything useful.
~
253962 0 0 0 0 0 0 0 0 E
30 10 -8 6d6+300 5d5+5
300 90000
8 8 2
E
#3012
kind soul~
a kind soul~
A very kind and caring soul is here looking out for those who need it.
~
She immediately reminds you of your mother. Constantly worrying about
everyone and everything. She is always around to help out those who have hit
hard times and need a little boost.
~
253962 0 0 0 0 0 0 0 0 E
30 10 -8 6d6+300 5d5+5
300 90000
8 8 2
E
#3013
newbie tour guide~
the newbie tour guide~
A newbie tour guide is here to help. "@RTell guide help@y" for assistance.@n
~
This young lady has the sole purpose of helping those who need assistance.
She will follow you around Midgaard and provide a walking tour of the local
attractions.
~
10 0 0 0 2128 0 0 0 0 E
10 17 4 2d2+100 1d2+1
100 10000
8 8 2
SavingPara: 2
SavingRod: 2
SavingPetri: 2
SavingBreath: 2
SavingSpell: 2
E
#3020
master mage guildmasters~
the mages' guildmaster~
Your guildmaster is studying a spellbook while preparing to cast a spell.
~
Even though your guildmaster looks old and tired, you can clearly see the
vast amount of knowledge she possesses. She is wearing fine magic clothing, and
you notice that she is surrounded by a blue shimmering aura.
~
59419 0 0 0 16 0 0 0 1000 E
34 9 -10 6d6+340 5d5+5
340 115600
8 8 2
E
#3021
guildmasters master priest~
the priests' guildmaster~
Your guildmaster is praying to your God here.
~
You are in no doubt that this guildmaster is truly close to your God; he has
a peaceful, loving look. You notice that he is surrounded by a white aura.
~
59419 0 0 0 16 0 0 0 1000 E
34 9 -10 6d6+340 5d5+5
340 115600
8 8 1
E
#3022
guildmasters master beggar thief~
the thieves' guildmaster~
A beggar is sitting here, could she be a guildmaster?
~
You realize that whenever your guildmaster moves, you fail to notice it - the
way of the true thief. She is to be dressed in poor clothing, having the
appearance of a beggar.
~
59419 0 0 0 16 0 0 0 1000 E
34 9 -10 6d6+340 5d5+5
340 115600
8 8 2
E
#3023
guildmasters master~
the fighters' guildmaster~
Your guildmaster is standing here sharpening an axe.
~
This is your master. Big and strong with bulging muscles. Several scars
across his body proves that he was using arms before you were born. He has a
calm look on his face.
~
59419 0 0 0 0 0 0 0 1000 E
34 9 -10 6d6+340 5d5+5
340 115600
8 8 1
E
#3024
sorcerer guildguard~
the sorcerer~
A sorcerer is guarding the entrance.
~
He is an experienced mage who has specialized in the field of Combat Magic.
He is here to guard the Mage's Guild and his superior knowledge of offensive as
well as defensive spells make him a deadly opponent.
~
256010 0 0 0 80 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3025
knight templar guildguard~
the knight templar~
A knight templar is guarding the entrance.
~
He is a specially trained warrior belonging to the military order of the
Faith. His duty is to protect the faithful from persecution and infidel attacks
and his religious devotion combined with his superior skill makes him a deadly
opponent.
~
256010 0 0 0 80 0 0 0 1000 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3026
assassin guildguard~
the assassin~
An assassin is guarding the entrance.
~
He is a thief who has specialized in killing others as effectively as
possible, using all sorts of weapons. His superior knowledge of how and where
to use them combined with his extraordinary stealth makes him a deadly opponent.
~
256010 0 0 0 1572944 0 0 0 400 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3027
knight guildguard~
the knight~
A knight is guarding the entrance.
~
He is an expert warrior who has attained knighthood through countless
chivalrous deeds. His duty is to protect the Guild of Swordsmen and his extreme
skill combined with his experience in warfare makes him a deadly opponent.
~
256010 0 0 0 80 0 0 0 800 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3040
bartender~
the bartender~
A bartender watches you calmly, while he skillfully mixes a drink.
~
A tired looking Bartender who hates trouble in his bar.
~
24586 0 0 0 0 0 0 0 900 E
24 12 -4 4d4+240 4d4+4
240 57600
8 8 1
E
#3041
waiter~
the waiter~
A waiter is going around from one place to another.
~
A tired looking waiter.
~
24586 0 0 0 0 0 0 0 900 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
#3042
waiter~
the waiter~
A man now leads a quiet, peaceful life as a waiter is standing here.
~
This man was obviously a famous sorcerer in his younger days as you instantly
recognize his face.
~
24586 0 0 0 0 0 0 0 600 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
#3043
waiter~
the waiter~
A waiter who seems to have reached contact with his God is standing here.
~
This waiter almost makes you feel like you should drop to your knees and
begin to worship your God. Naaah.
~
24586 0 0 0 0 0 0 0 600 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
#3044
waiter~
the waiter~
A waiter who knows where all his customers keep their money is standing here.
~
Hmmm... Wonder where he got that coin he is playing with.
~
24586 0 0 0 0 0 0 0 600 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
#3045
waiter~
the waiter~
A waiter is here.
~
This guy looks like he could easily kill you while still carrying quite a few
firebreathers.
~
24586 0 0 0 0 0 0 0 600 E
23 13 -3 4d4+230 3d3+3
230 52900
8 8 1
E
#3046
filthy~
Filthy~
Filthy is standing here, eager to serve you a special drink.
~
Filthy looks real, ehm, dirty. He likes to keep his customers happy, but do
not mess with him or else he'll get upset.
~
26650 0 0 0 16 0 0 0 600 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 1
E
#3059
keeper peacekeeper~
the Peacekeeper~
A Peacekeeper is standing here, ready to jump in at the first sign of trouble.
~
He looks very strong and wise. Looks like he doesn't answer to ANYONE.
~
6232 0 0 0 16 0 0 0 1000 E
17 15 0 3d3+170 2d2+2
170 28900
8 8 1
BareHandAttack: 10
E
#3060
cityguard guard~
the cityguard~
A cityguard stands here.
~
A big, strong, helpful, trustworthy guard.
~
6216 0 0 0 16 0 0 0 1000 E
10 17 4 2d2+100 1d2+1
100 10000
8 8 1
E
#3061
janitor~
the janitor~
A janitor is walking around, cleaning up.
~
What a tough job he has.
~
2120 0 0 0 0 0 0 0 800 E
1 20 9 0d0+10 1d2+0
10 100
8 8 1
E
#3062
fido dog~
the beastly fido~
A beastly fido is mucking through the garbage looking for food here.
~
The fido is a small dog that has a foul smell and pieces of rotted meat
hanging around his teeth.
~
202 0 0 0 65536 0 0 0 -200 E
1 20 9 0d0+10 1d2+0
10 100
8 8 1
BareHandAttack: 4
E
#3063
mercenary~
the mercenary~
A mercenary is waiting for a job here.
~
He looks pretty mean, and you imagine he'd do anything for money.
~
2058 0 0 0 0 0 0 0 -330 E
5 19 7 1d1+50 1d2+0
50 2500
8 8 1
E
#3064
drunk~
the drunk~
A singing, happy Drunk.
~
A drunk who seems to be too happy, and to carry too much money.
~
10 0 0 0 0 0 0 0 400 E
2 20 8 0d0+20 1d2+0
20 400
8 8 1
E
#3065
beggar~
the beggar~
A beggar is here, asking for a few coins.
~
The beggar looks like she is fed up with life.
~
10 0 0 0 0 0 0 0 400 E
1 20 9 0d0+10 1d2+0
10 100
8 8 2
E
#3066
odif yltsaeb~
the odif yltsaeb~
An odif yltsaeb is here, walking backwards.
~
The odif is a small god that has been reversed by some dog.
~
65768 0 0 0 65536 0 0 0 -200 E
1 20 9 0d0+10 1d2+0
10 100
8 8 1
BareHandAttack: 4
E
#3067
cityguard guard~
the cityguard~
A cityguard is here, guarding the gate.
~
A big, strong, helpful, trustworthy guard.
~
6218 0 0 0 0 0 0 0 1000 E
10 17 4 2d2+100 1d2+1
100 10000
8 8 1
E
#3068
green gelatinous blob oozing~
the green gelatinous blob~
An oozing green gelatinous blob is here, sucking in bits of debris.
~
A horrid looking thing; it is huge, greenish, and looks like the blob.
~
256216 0 0 0 16 0 0 0 0 E
20 14 -2 4d4+200 3d3+3
200 40000
8 8 0
BareHandAttack: 6
E
#3089
petshops shop boy~
the Pet Shop Boy~
There is a Pet Shop Boy standing here cuddling something furry in his hands.
~
As you look at him, he opens his hands to reveal a rat!
~
26634 0 0 0 0 0 0 0 1000 E
10 17 4 2d2+100 1d2+1
100 10000
8 8 1
E
#3090
kitten pets~
the kitten~
A small loyal kitten is here.
~
The kitten looks like a cute, little, fierce fighter.
~
16398 0 0 0 0 0 0 0 0 E
1 20 9 0d0+10 1d2+0
10 100
8 8 0
BareHandAttack: 8
E
#3091
puppy pets~
the puppy~
A small loyal puppy is here.
~
The puppy looks like a cute, little, fierce fighter.
~
16398 0 0 0 0 0 0 0 0 E
1 20 9 0d0+10 1d2+0
10 100
8 8 0
BareHandAttack: 8
E
#3092
beagle pets~
the beagle~
A small, quick, loyal beagle is here.
~
The beagle looks like a fierce fighter.
~
16398 0 0 0 0 0 0 0 0 E
2 20 8 0d0+20 1d2+0
20 400
8 8 0
BareHandAttack: 4
E
#3093
rottweiler pets~
the rottweiler~
A large, loyal rottweiler is here.
~
The rottweiler looks like a strong, fierce fighter.
~
16398 0 0 0 0 0 0 0 0 E
3 19 8 0d0+30 1d2+0
30 900
8 8 0
BareHandAttack: 4
E
#3094
wolf pets~
the wolf~
A large, trained wolf is here.
~
The wolf looks like a strong, fearless fighter.
~
16398 0 0 0 0 0 0 0 0 E
4 19 7 0d0+40 1d2+0
40 1600
8 8 0
BareHandAttack: 4
E
#3095
cryogenicist cryo~
the cryogenicist~
The cryogenicist is here, playing with a canister of liquid nitrogen.
~
You notice a tired look in her face. She looks like she isn't paid well
enough to put up with any crap from mud players with attitudes.
~
26635 0 0 0 65616 0 0 0 900 E
33 9 -9 6d6+330 5d5+5
330 108900
8 8 2
E
$

View file

@ -1,5 +1,4 @@
0.mob
1.mob
2.mob
30.mob
$

View file

@ -1,2 +1 @@
30.mob
$

View file

@ -1,695 +0,0 @@
#3000
barrel beer~
a barrel~
A beer barrel has been left here.~
~
17 0 0 0 0 a 0 0 0 0 0 0 0
50 50 1 0
50 300 100 0 0
#3001
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
#3002
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
#3003
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
#3004
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
#3005
key dull metal~
a key of dull metal~
A key made of a dull metal is lying on the ground here.~
~
18 cdq 0 0 0 ao 0 0 0 0 0 0 0
0 0 0 0
1 1 0 0 0
#3006
teleporter~
the teleporter~
A strange device labeled "teleporter" was left here.~
~
12 0 0 0 0 a 0 0 0 0 0 0 0
0 0 0 0
1 10 0 0 0
T 3014
T 3015
E
teleporter~
This teleporter is used to transfer players between zones. Accessible zones
are listed under HELP ZONES by being CAPITALIZED. For example to teleport to:
74 Newbie GRAVEyard -- Jojen 3- 5
type: teleport grave
The teleporter may also be used to recall back to Midgaard at any time.
Uncapitalized zones are linked through a capitalized zone.
~
#3009
waybread bread~
a waybread~
Some waybread has been put here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
24 0 0 0
1 50 50 0 0
E
waybread bread~
The waybread is the traditional feed of elves when travelling, they call it
lembas. It is said to refresh the weary traveler greatly.
~
#3010
bread loaf~
a bread~
A loaf of bread has been left here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
12 0 0 0
1 10 10 0 0
#3011
danish pastry~
a danish pastry~
A nice looking delicious danish pastry has been placed here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
5 0 0 0
1 5 5 0 0
#3012
taco mexican~
a Mexican taco~
A tasty looking Mexican taco has been dropped here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
15 0 0 0
1 15 15 0 0
#3013
burrito hot~
a spicy hot burrito~
A spicy looking burrito has been set here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
10 0 0 0
1 10 10 0 0
#3014
nachos nacho~
some nachos with cheese~
Some nachos have been left here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
5 0 0 0
1 5 5 0 0
E
nachos nacho~
They have cheese on them. Looks like one of Uncle Juan's specials.
~
#3015
meat chunk~
a piece of meat~
A rather dubious looking piece of meat is on the ground here.~
~
19 0 0 0 0 a 0 0 0 0 0 0 0
14 0 0 0
5 24 10 0 0
E
meat chunk~
It isn't so much that the meat looks poisoned or anything, but that you just
are not sure of its origins. You doubt that a hunter would drop a side of
venison or rabbit meat... What in the world could this meat have come from, you
wonder...
~
#3020
dagger~
a dagger~
A dagger with a long thin blade is here.~
~
5 n 0 0 0 an 0 0 0 0 0 0 0
0 1 4 11
1 10 10 0 0
#3021
sword small~
a small sword~
A small sword lies here.~
~
5 e 0 0 0 an 0 0 0 0 0 0 0
0 1 6 11
3 60 10 0 0
E
inscription~
It says: 'May this sword be a good companion. '
~
E
sword small~
The small sword seems to have an inscription of some sort.
~
#3022
sword long~
a long sword~
A long sword has been left here.~
~
5 n 0 0 0 an 0 0 0 0 0 0 0
0 1 8 3
8 600 10 0 0
#3023
club wooden~
a wooden club~
A simple looking wooden club is here.~
~
5 0 0 0 0 an 0 0 0 0 0 0 0
0 1 3 7
3 12 10 0 0
#3024
warhammer hammer~
a warhammer~
A medium sized warhammer is here.~
~
5 0 0 0 0 an 0 0 0 0 0 0 0
0 1 5 7
6 50 10 0 0
#3025
flail large~
a flail~
A large flail is here.~
~
5 0 0 0 0 an 0 0 0 0 0 0 0
0 2 4 7
6 625 10 0 0
#3030
torch~
a torch~
A large torch.~
~
1 0 0 0 0 ao 0 0 0 0 0 0 0
0 0 24 0
1 10 10 0 0
#3031
lantern brass~
a lantern~
A brass lantern is here.~
~
1 0 0 0 0 ao 0 0 0 0 0 0 0
0 0 96 0
1 50 10 0 0
#3032
bag~
a bag~
A small bag is here.~
~
15 0 0 0 0 ao 0 0 0 0 0 0 0
50 0 0 0
2 20 10 0 0
#3033
box~
a box~
A small box is here.~
~
15 0 0 0 0 ao 0 0 0 0 0 0 0
10 0 0 0
5 50 10 0 0
#3034
atm teller banks machine~
an automatic teller machine~
An automatic teller machine has been installed in the wall here.~
~
12 cdeg 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0
E
atm teller bank machine~
There is a small note on the machine which says:
To use, type 'BALANCE', 'WITHDRAW <amount>', or 'DEPOSIT <amount>'.
Please report any strange occurrences to the bank manager.
~
#3035
fountain water~
the large fountain~
A large fountain carved from blue-streaked marble is here, bubbling merrily.~
~
23 cdeg 0 0 0 0 0 0 0 0 0 0 0
500 500 15 0
505 0 0 0 0
E
marble blue streaked fountain~
It is a well crafted fountain, carved from a single piece of very beautiful
white marble shot through with electric blue streaks that look almost like
lightning dancing along the sides of the fountain. It seems to be enchanted in
some manner, as the water level seems to never lower.
~
#3036
cashcard card atm banks~
a cashcard~
A handy dandy cashcard is sitting on the ground here.~
~
12 cdeg 0 0 0 ao 0 0 0 0 0 0 0
0 0 0 0
1 1000 10 0 0
E
cashcard card atm~
There is some writing on the back of the card which reads:
To use, type 'BALANCE', 'WITHDRAW <amount>', or 'DEPOSIT <amount>'.
Please report any strange occurrences to the bank manager.
~
#3037
candle~
a candle~
A candle lies here, unlit.~
~
1 0 0 0 0 ao 0 0 0 0 0 0 0
0 0 -1 0
1 5 1 0 0
E
candle~
A home-made candle, how quaint!
~
#3038
nail~
a nail~
A penny nail lies in the dust.~
~
5 0 0 0 0 an 0 0 0 0 0 0 0
0 1 1 11
1 5 1 0 0
E
nail~
Its a common iron nail, used for carpentry work.
~
#3039
pot~
a pot~
A cast-iron pot sits on the ground.~
~
15 0 0 0 0 a 0 0 0 0 0 0 0
10 0 0 0
10 100 20 0 0
E
pot~
It is a nice pot. You could use it, if you ever settled down.
~
#3040
plate breast~
a breast plate~
A breast plate is lying on the ground.~
~
9 0 0 0 0 ad 0 0 0 0 0 0 0
7 0 0 0
50 180 15 0 0
#3041
shirt chain mail~
a chain mail shirt~
A chain mail shirt is lying on the ground.~
~
9 0 0 0 0 ad 0 0 0 0 0 0 0
5 0 0 0
50 250 5 0 0
#3042
shield wooden~
a shield~
A small wooden shield is lying on the ground.~
~
9 0 0 0 0 aj 0 0 0 0 0 0 0
2 0 0 0
3 100 10 0 0
#3043
jacket soft leather~
a leather jacket~
A soft leather jacket is lying on the ground.~
~
9 0 0 0 0 ad 0 0 0 0 0 0 0
2 0 0 0
10 200 10 0 0
#3044
jacket studded leather~
a studded leather jacket~
A studded leather jacket is lying on the ground.~
~
9 0 0 0 0 ad 0 0 0 0 0 0 0
3 0 0 0
20 500 10 0 0
#3045
jacket scale mail~
a scale mail jacket~
A scale mail jacket is lying on the ground.~
~
9 0 0 0 0 ad 0 0 0 0 0 0 0
4 0 0 0
40 1000 10 0 0
#3046
plate bronze breast~
a bronze breast plate~
A bronze breast plate is lying on the ground.~
~
9 0 0 0 0 ad 0 0 0 0 0 0 0
6 0 0 0
50 700 10 0 0
#3050
scroll identify~
a scroll of identify~
A scroll has carelessly been left here.~
~
2 g 0 0 0 ao 0 0 0 0 0 0 0
1 52 -1 -1
1 5000 10 0 0
E
scroll identify~
The scroll has a magic formula drawn upon it:
???
? ?
?
?
?
*
~
#3051
potion yellow~
a yellow potion of see invisible~
A small yellow potion has carelessly been left here.~
~
10 g 0 0 0 ao 0 0 0 0 0 0 0
1 19 -1 -1
1 400 10 0 0
E
potion yellow~
The potion has a small label 'Detect The Invisible'.
~
#3052
scroll recall~
a scroll of recall~
A scroll has carelessly been left here.~
~
2 g 0 0 0 ao 0 0 0 0 0 0 0
1 42 -1 -1
4 200 10 0 0
E
scroll recall~
The scroll has written a formulae of 'Word of Recall' upon it.
~
#3053
wand gray~
a gray wand of invisibility~
A gray wand has carelessly been left here.~
~
3 g 0 0 0 ao 0 0 0 0 0 0 0
1 2 2 29
2 400 10 0 0
E
wand gray~
The wand is an old dark gray stick. You notice a small symbol etched
at the base of the wand. It looks like this:
\ /
- O -
/ \
~
#3054
staff gnarled~
a gnarled staff~
A gnarled staff has carelessly been left here.~
~
4 g 0 0 0 ao 0 0 0 0 0 0 0
1 1 1 38
17 700 50 0 0
E
staff gnarled~
The staff is made of old oak, and is around five feet long. It fits
perfectly into your hand. You notice a small symbol etched at the
base of the staff, it looks like:
ZZZZZ
Z
Z
Z
ZZZZZ z z
~
#3055
staff metal~
a metal staff~
A metal staff has carelessly been left here.~
~
4 g 0 0 0 ao 0 0 0 0 0 0 0
1 8 8 15
7 850 30 0 0
E
staff metal~
The staff is made of metals unknown to you.
~
#3060
raft~
a raft~
A raft has been left here.~
~
22 0 0 0 0 a 0 0 0 0 0 0 0
0 0 0 0
50 400 10 0 0
E
raft~
The raft looks very primitive.
~
#3061
canoe~
a canoe~
A canoe has been left here.~
~
22 0 0 0 0 a 0 0 0 0 0 0 0
0 0 0 0
32 1000 100 0 0
E
canoe~
The canoe is fairly light.
~
#3070
gauntlets bronze~
a pair of bronze gauntlets~
A pair of bronze gauntlets is lying on the ground.~
~
9 0 0 0 0 ah 0 0 0 0 0 0 0
6 0 0 0
8 175 10 0 0
#3071
gloves leather~
a pair of leather gloves~
A pair of leather gloves is lying on the ground.~
~
9 0 0 0 0 ah 0 0 0 0 0 0 0
3 0 0 0
3 75 10 0 0
#3075
helmet bronze~
a bronze helmet~
A bronze helmet is lying on the ground.~
~
9 0 0 0 0 ae 0 0 0 0 0 0 0
6 0 0 0
8 350 10 0 0
#3076
cap leather~
a leather cap~
A leather cap is lying on the ground.~
~
9 0 0 0 0 ae 0 0 0 0 0 0 0
3 0 0 0
3 150 10 0 0
#3080
leggings bronze~
a pair of bronze leggings~
A pair of bronze leggings is lying on the ground.~
~
9 0 0 0 0 af 0 0 0 0 0 0 0
6 0 0 0
8 350 10 0 0
#3081
pants leather~
a pair of leather pants~
A pair of leather pants is lying on the ground.~
~
9 0 0 0 0 af 0 0 0 0 0 0 0
3 0 0 0
8 150 10 0 0
#3082
leather gorget neck guard~
a leather gorget~
A leather neck guard has been left here~
~
9 0 0 0 0 ac 0 0 0 0 0 0 0
3 0 0 0
1 10 0 0 0
E
leather gorget neck guard~
This leather neck guard is meant to protect the throat and face in battle.
~
#3083
leather ring~
a leather ring~
A leather ring with strange symbols lies here.~
~
11 0 0 0 0 ab 0 0 0 0 0 0 0
1 0 0 0
1 10 1 0 0
E
leather ring~
The ring used to have some strange writing and symbols around the band but it
has become so worn with time and use that it is unreadable.
~
#3084
leather boots~
a pair of leather boots~
A pair of leather boots is lying here.~
~
11 0 0 0 0 ag 0 0 0 0 0 0 0
4 0 0 0
2 11 0 0 0
E
leather boots~
The boots are worn with age but well oiled and polished to still remain
useable.
~
#3085
sleeves bronze~
a pair of bronze sleeves~
A pair of bronze sleeves is lying on the ground.~
~
9 0 0 0 0 ai 0 0 0 0 0 0 0
6 0 0 0
8 175 10 0 0
#3086
sleeves leather~
a pair of leather sleeves~
A pair of leather sleeves is lying on the ground.~
~
9 0 0 0 0 ai 0 0 0 0 0 0 0
2 0 0 0
4 75 10 0 0
#3087
brown leather cape~
a brown leather cape~
A brown leather cape was abandoned on the floor~
~
9 0 0 0 0 ak 0 0 0 0 0 0 0
5 0 0 0
4 100 0 0 0
E
brown leather cape~
It is a rough brown leather cape that is frayed at the end.
~
A
1 1
#3088
leather old belt~
an old leather belt~
A belt made of leather was left here.~
~
9 e 0 0 0 al 0 0 0 0 0 0 0
2 0 0 0
1 30 0 0 0
E
belt leather old~
It looks very, very old.
~
A
18 2
A
1 1
#3089
leather wristguard~
a leather wristguard~
A leather wristguard lies in the dirt.~
~
9 0 0 0 0 am 0 0 0 0 0 0 0
1 0 0 0
3 30 0 0 0
E
leather wristguard~
The wristguard has been heavily oiled and is extremely flexible and
supportive. It is laced with some leather string to loosen and tighten to
almost any size.
~
#3096
boards social bulletin gen_boards~
a social bulletin board~
A large, sociable bulletin board is mounted on a wall here.~
~
12 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0
E
social bulletin~
Use 'look board' to read the board.
~
E
board~
If you can read this, the board is not working.
~
#3097
boards frozen bulletin gen_boards~
a frozen bulletin board~
A large bulletin board is here, carved from a block of ice.~
~
13 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0
E
freeze bulletin~
Use 'look board' to read the board.
~
E
board~
If you can read this, the board is not working.
~
#3098
boards holy bulletin gen_boards~
a holy bulletin board~
A large bulletin board is mounted on a wall here. It glows with a faint aura.~
~
13 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0
E
holy bulletin~
Use 'look board' to read the board.
~
E
board~
If you can read this, the board is not working.
~
#3099
boards bulletin gen_boards~
a bulletin board~
A large 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.
~
$~

View file

@ -1,5 +1,4 @@
0.obj
1.obj
2.obj
30.obj
$

View file

@ -1,2 +1 @@
30.obj
$

View file

@ -1,398 +0,0 @@
CircleMUD v3.0 Shop File~
#3000~
3050
3051
3052
3053
3054
-1
1.15
0.15
2
3
4
10
-1
%s Sorry, I haven't got exactly that item.~
%s You don't seem to have that.~
%s I don't buy such items.~
%s That is too expensive for me!~
%s You can't afford it!~
%s That'll be %d coins, please.~
%s You'll get %d coins for it!~
0
6
3000
2
3033
-1
0
28
0
0
#3001~
3009
3010
3011
-1
1.40
0.90
-1
%s Haven't got that on storage - try list!~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s If you have no money, you'll have to go!~
%s That'll be %d coins.~
%s Oops - %d a minor bug - please report!~
0
6
3001
0
3009
-1
0
28
0
0
#3002~
3030
3031
3032
3033
3036
-1
1.50
0.40
1
8
15
-1
%s Haven't got that on storage - try list!~
%s You don't seem to have that.~
%s I don't buy THAT... Try another shop.~
%s I can't afford such a treasure.~
%s You can't afford it!~
%s That'll be %d coins, please.~
%s You'll get %d coins for it!~
0
6
3002
0
3010
-1
0
28
0
0
#3003~
3020
3021
3022
3023
3024
3025
-1
1.30
0.40
5
-1
%s I haven't got that kind of a weapon!~
%s You don't carry that weapon!~
%s I only buy weapons.~
%s I can't afford such a great weapon!~
%s sorry, but NO CREDIT!~
%s That costs just %d coins.~
%s Here, you can have %d coins for that.~
0
6
3003
0
3011
-1
0
28
0
0
#3004~
3040
3041
3042
3043
3044
3045
3046
3070
3071
3075
3076
3080
3081
3085
3086
-1
1.20
0.50
9
-1
%s Haven't got that on storage - try list!~
%s You don't seem to have that.~
%s I only buy armors.. Go away!~
%s That is too expensive for me - Try a wizard!~
%s You can't afford it!~
%s That'll be %d coins, please.~
%s You'll get %d coins for it!~
0
6
3004
0
3020
-1
0
28
0
0
#3005~
3006
-1
1.20
0.90
-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
6
3011
0
3000
-1
0
28
0
0
#3006~
3060
3061
-1
1.20
0.90
22
-1
%s Sorry pal, I have not got that kind of ship.~
%s Ok, but let me see it first.~
%s I only trade ships.~
%s I can't afford such a nice ship.~
%s This ship is too expensive for you.~
%s Here is your ship, I'll take %d gold coins.~
%s What a fine deal, you get %d gold coins.~
0
6
3006
0
3049
-1
6
22
0
0
#3007~
-1
2.00
0.50
-1
%s Sorry, you aren't on my list of people I can sell to.~
%s Sorry, I don't buy from outsiders.~
%s Sorry, I don't buy from outsiders.~
%s Sorry, I don't buy from outsiders.~
%s Sorry, but here, no money means no goods!~
%s That will be %d coins, please. Thank you.~
%s Here, you can have %d coins for that.~
2
6
3007
1
3050
-1
0
28
0
0
#3009~
3102
3103
3104
-1
1.20
0.80
-1
%s Sorry, I don't have that -- try list!~
%s Sorry, I don't buy waters from outsiders.~
%s Sorry, I don't buy waters from outsiders.~
%s Sorry, I don't buy waters from outsiders.~
%s Sorry, but here, no money means no water!~
%s That will be %d coins, please. Thank you.~
%s Here, you can have %d coins for that.~
0
6
3009
0
3058
-1
0
28
0
0
#3040~
3000
3001
3002
3003
3004
-1
1.10
0.90
-1
%s It's very noisy in here, what did you say you wanted to buy?~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s Are you drunk or what?? - NO CREDIT!~
%s That'll be - say %d coins.~
%s Here, you can have %d coins for that.~
0
6
3040
0
3007
-1
0
28
0
0
#3042~
3002
3003
-1
1.20
0.80
-1
%s Haven't got that on storage - try list!~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s If you have no money, you'll have to go!~
%s That'll be %d coins.~
%s Here, you can have %d coins for that.~
0
6
3042
112
3018
-1
0
28
0
0
#3043~
3002
3004
-1
1.10
0.90
-1
%s Haven't got that on storage - try list!~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s If you have no money, you'll have to go!~
%s That'll be %d coins.~
%s Here, you can have %d coins for that.~
0
6
3043
104
3003
-1
0
28
0
0
#3044~
3003
3004
-1
1.70
0.80
-1
%s Haven't got that on storage - try list!~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s If you have no money, you'll have to go!~
%s That'll be %d coins.~
%s Here, you can have %d coins for that.~
0
6
3044
88
3028
-1
0
28
0
0
#3045~
3002
3003
3004
-1
1.50
0.75
-1
%s Haven't got that on storage - try list!~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s If you have no money, you'll have to go!~
%s That'll be %d coins.~
%s Here, you can have %d coins for that.~
0
6
3045
56
3022
-1
0
28
0
0
#3046~
3004
3003
-1
1.30
0.70
-1
%s It's very noisy in here, what did you say you wanted to buy?~
%s I don't buy!~
%s I don't buy!~
%s I don't buy!~
%s Oh, bugger off, NO CREDIT!~
%s That'll be - say %d coins.~
%s Here, you can have %d coins for that.~
0
6
3046
0
3048
-1
0
28
0
0
$~

View file

@ -1,5 +1,4 @@
0.shp
1.shp
2.shp
30.shp
$

View file

@ -1,2 +1 @@
30.shp
$

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,4 @@
0.wld
1.wld
2.wld
30.wld
$

View file

@ -1,2 +1 @@
30.wld
$

View file

@ -1,175 +0,0 @@
#30
DikuMUD~
Northern Midgaard~
3000 3099 15 2 d 0 0 0 1 33
R 0 3000 3006 -1 (the teleporter)
O 0 3006 99 3000 (the teleporter)
M 0 3011 1 3000 (the travelling saleswoman)
G 1 3006 99 -1 (the teleporter)
R 0 3000 3099 -1 (a bulletin board)
O 0 3099 99 3000 (a bulletin board)
R 0 3001 3034 -1 (an automatic teller machine)
O 0 3034 99 3001 (an automatic teller machine)
M 0 3012 1 3063 (a kind soul)
M 0 3045 1 3022 (the waiter)
G 1 3002 100 -1 (a bottle)
G 1 3003 100 -1 (a bottle)
G 1 3004 100 -1 (a bottle)
E 1 3022 100 16 (a long sword)
R 0 3022 3096 -1 (a social bulletin board)
O 0 3096 99 3022 (a social bulletin board)
M 0 3044 1 3028 (the waiter)
G 1 3003 100 -1 (a bottle)
G 1 3004 100 -1 (a bottle)
E 1 3021 100 16 (a small sword)
R 0 3028 3096 -1 (a social bulletin board)
O 0 3096 99 3028 (a social bulletin board)
M 0 3043 1 3003 (the waiter)
G 1 3002 100 -1 (a bottle)
G 1 3004 100 -1 (a bottle)
E 1 3024 100 16 (a warhammer)
R 0 3003 3096 -1 (a social bulletin board)
O 0 3096 99 3003 (a social bulletin board)
M 0 3042 1 3018 (the waiter)
G 1 3002 100 -1 (a bottle)
G 1 3003 100 -1 (a bottle)
E 1 3020 100 16 (a dagger)
R 0 3018 3096 -1 (a social bulletin board)
O 0 3096 99 3018 (a social bulletin board)
M 0 3009 1 3058 (Wally the Watermaster)
G 1 3102 100 -1 (a cup)
G 1 3103 100 -1 (a bottle)
G 1 3104 100 -1 (a canteen)
M 0 3026 1 3027 (the assassin)
E 1 3022 100 16 (a long sword)
M 0 3059 5 3027 (the Peacekeeper)
M 0 3060 10 3027 (the cityguard)
E 1 3022 100 16 (a long sword)
R 0 3027 3034 -1 (an automatic teller machine)
O 0 3034 99 3027 (an automatic teller machine)
M 0 3027 1 3021 (the knight)
E 1 3022 100 16 (a long sword)
M 0 3059 5 3021 (the Peacekeeper)
M 0 3060 10 3021 (the cityguard)
E 1 3022 100 16 (a long sword)
R 0 3021 3034 -1 (an automatic teller machine)
O 0 3034 99 3021 (an automatic teller machine)
M 0 3024 1 3017 (the sorcerer)
E 1 3022 100 16 (a long sword)
M 0 3059 5 3017 (the Peacekeeper)
M 0 3060 10 3017 (the cityguard)
E 1 3022 100 16 (a long sword)
R 0 3017 3034 -1 (an automatic teller machine)
O 0 3034 99 3017 (an automatic teller machine)
M 0 3025 1 3004 (the knight templar)
E 1 3022 100 16 (a long sword)
M 0 3059 5 3004 (the Peacekeeper)
M 0 3060 10 3004 (the cityguard)
E 1 3022 100 16 (a long sword)
R 0 3004 3034 -1 (an automatic teller machine)
O 0 3034 99 3004 (an automatic teller machine)
M 0 3005 1 3008 (the receptionist)
E 1 3022 100 16 (a long sword)
M 0 3068 4 3008 (the green gelatinous blob)
R 0 3008 3034 -1 (an automatic teller machine)
O 0 3034 99 3008 (an automatic teller machine)
M 0 3000 1 3033 (the wizard)
G 1 3050 500 -1 (a scroll of identify)
G 1 3051 500 -1 (a yellow potion of see invisible)
G 1 3052 500 -1 (a scroll of recall)
G 1 3053 500 -1 (a gray wand of invisibility)
G 1 3054 500 -1 (a gnarled staff)
M 0 3001 1 3009 (the baker)
G 1 3009 100 -1 (a waybread)
G 1 3010 100 -1 (a bread)
G 1 3011 100 -1 (a danish pastry)
E 1 3022 100 16 (a long sword)
M 0 3002 1 3010 (the grocer)
G 1 3030 100 -1 (a torch)
G 1 3031 100 -1 (a lantern)
G 1 3032 100 -1 (a bag)
G 1 3033 100 -1 (a box)
G 1 3036 100 -1 (a cashcard)
E 1 3022 100 16 (a long sword)
M 0 3003 1 3011 (the weaponsmith)
G 1 3020 100 -1 (a dagger)
G 1 3021 100 -1 (a small sword)
G 1 3022 100 -1 (a long sword)
G 1 3023 100 -1 (a wooden club)
G 1 3024 100 -1 (a warhammer)
G 1 3025 100 -1 (a flail)
E 1 3022 100 16 (a long sword)
M 0 3004 1 3020 (the armorer)
G 1 3040 100 -1 (a breast plate)
G 1 3041 100 -1 (a chain mail shirt)
G 1 3042 100 -1 (a shield)
G 1 3043 100 -1 (a leather jacket)
G 1 3044 100 -1 (a studded leather jacket)
G 1 3045 100 -1 (a scale mail jacket)
G 1 3046 100 -1 (a bronze breast plate)
G 1 3070 100 -1 (a pair of bronze gauntlets)
G 1 3071 100 -1 (a pair of leather gloves)
G 1 3075 100 -1 (a bronze helmet)
G 1 3076 100 -1 (a leather cap)
G 1 3080 100 -1 (a pair of bronze leggings)
G 1 3081 100 -1 (a pair of leather pants)
G 1 3085 100 -1 (a pair of bronze sleeves)
G 1 3086 100 -1 (a pair of leather sleeves)
E 1 3022 100 16 (a long sword)
M 0 3006 1 3049 (Captain Stolar)
G 1 3060 20 -1 (a raft)
G 1 3061 10 -1 (a canoe)
M 0 3007 1 3050 (the sailor)
M 0 3010 1 3062 (the postmaster)
M 0 3020 1 3019 (the mages' guildmaster)
M 0 3021 1 3002 (the priests' guildmaster)
M 0 3022 1 3029 (the thieves' guildmaster)
M 0 3023 1 3023 (the fighters' guildmaster)
M 0 3040 1 3007 (the bartender)
G 1 3000 100 -1 (a barrel)
G 1 3001 100 -1 (a bottle)
G 1 3002 100 -1 (a bottle)
G 1 3003 100 -1 (a bottle)
G 1 3004 100 -1 (a bottle)
E 1 3022 100 16 (a long sword)
M 0 3046 1 3048 (Filthy)
G 1 3003 100 -1 (a bottle)
G 1 3004 100 -1 (a bottle)
E 1 3022 100 16 (a long sword)
M 0 3059 5 3014 (the Peacekeeper)
M 0 3060 10 3014 (the cityguard)
E 1 3022 100 16 (a long sword)
M 0 3061 5 3006 (the janitor)
M 0 3062 15 3024 (the beastly fido)
G 1 3015 30 -1 (a piece of meat)
M 0 3062 15 3025 (the beastly fido)
G 1 3015 30 -1 (a piece of meat)
M 0 3062 15 3016 (the beastly fido)
G 1 3015 30 -1 (a piece of meat)
M 0 3062 15 3012 (the beastly fido)
G 1 3015 30 -1 (a piece of meat)
M 0 3063 5 3026 (the mercenary)
E 1 3021 100 16 (a small sword)
M 0 3064 3 3007 (the drunk)
M 0 3065 2 3044 (the beggar)
G 1 3005 1 -1 (a key of dull metal)
M 0 3065 2 3048 (the beggar)
M 0 3066 1 3026 (the odif yltsaeb)
G 1 3015 30 -1 (a piece of meat)
M 0 3067 10 3041 (the cityguard)
E 1 3022 100 16 (a long sword)
M 0 3067 10 3040 (the cityguard)
E 1 3022 100 16 (a long sword)
M 0 3068 4 3014 (the green gelatinous blob)
M 0 3089 1 3031 (the Pet Shop Boy)
M 0 3090 1 3032 (the kitten)
M 0 3091 1 3032 (the puppy)
M 0 3092 1 3032 (the beagle)
M 0 3093 1 3032 (the rottweiler)
M 0 3094 1 3032 (the wolf)
M 0 3095 1 3064 (the cryogenicist)
E 1 3022 100 16 (a long sword)
R 0 3005 3035 -1 (the large fountain)
O 0 3035 1 3005 (the large fountain)
S
$

View file

@ -1,5 +1,4 @@
0.zon
1.zon
2.zon
30.zon
$

View file

@ -1,2 +1 @@
30.zon
$

View file

@ -47,6 +47,7 @@ $%.o: %.c
clean:
rm -f *.o depend
rm -f ./tests/*.o depend
# Dependencies for the object files (automagically generated with
# gcc -MM)

View file

@ -1238,9 +1238,8 @@ static void do_stat_character(struct char_data *ch, struct char_data *k)
CCCYN(ch, C_NRM), CCYEL(ch, C_NRM), GET_SCREEN_WIDTH(k), CCNRM(ch, C_NRM),
CCYEL(ch, C_NRM), GET_PAGE_LENGTH(k), CCCYN(ch, C_NRM), CCNRM(ch, C_NRM));
send_to_char(ch, "AC: [%d%+d/10], Hitroll: [%2d], Damroll: [%2d], Saving throws: [%d/%d/%d/%d/%d]\r\n",
GET_AC(k), dex_app[GET_DEX(k)].defensive, k->points.hitroll,
k->points.damroll, GET_SAVE(k, 0), GET_SAVE(k, 1), GET_SAVE(k, 2),
send_to_char(ch, "AC: [%d%+d/10], Saving throws: [%d/%d/%d/%d/%d]\r\n",
GET_AC(k), dex_app[GET_DEX(k)].defensive, GET_SAVE(k, 0), GET_SAVE(k, 1), GET_SAVE(k, 2),
GET_SAVE(k, 3), GET_SAVE(k, 4));
sprinttype(GET_POS(k), position_types, buf, sizeof(buf));
@ -3228,7 +3227,6 @@ static struct set_struct {
{ "class", LVL_BUILDER, BOTH, MISC },
{ "color", LVL_GOD, PC, BINARY },
{ "con", LVL_BUILDER, BOTH, NUMBER },
{ "damroll", LVL_BUILDER, BOTH, NUMBER }, /* 10 */
{ "deleted", LVL_IMPL, PC, BINARY },
{ "dex", LVL_BUILDER, BOTH, NUMBER },
{ "drunk", LVL_BUILDER, BOTH, MISC },
@ -3237,7 +3235,6 @@ static struct set_struct {
{ "gold", LVL_BUILDER, BOTH, NUMBER },
{ "height", LVL_BUILDER, BOTH, NUMBER },
{ "hitpoints", LVL_BUILDER, BOTH, NUMBER },
{ "hitroll", LVL_BUILDER, BOTH, NUMBER },
{ "hunger", LVL_BUILDER, BOTH, MISC }, /* 20 */
{ "int", LVL_BUILDER, BOTH, NUMBER },
{ "invis", LVL_GOD, PC, NUMBER },
@ -3374,14 +3371,10 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
vict->real_abils.con = value;
affect_total(vict);
break;
case 10: /* damroll */
vict->points.damroll = RANGE(-20, 20);
affect_total(vict);
break;
case 11: /* delete */
case 10: /* delete */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_DELETED);
break;
case 12: /* dex */
case 11: /* dex */
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
RANGE(3, 25);
else
@ -3389,7 +3382,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
vict->real_abils.dex = value;
affect_total(vict);
break;
case 13: /* drunk */
case 12: /* drunk */
if (!str_cmp(val_arg, "off")) {
GET_COND(vict, DRUNK) = -1;
send_to_char(ch, "%s's drunkenness is now off.\r\n", GET_NAME(vict));
@ -3403,32 +3396,28 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
return (0);
}
break;
case 14: /* exp */
case 13: /* exp */
vict->points.exp = RANGE(0, 50000000);
break;
case 15: /* frozen */
case 14: /* frozen */
if (ch == vict && on) {
send_to_char(ch, "Better not -- could be a long winter!\r\n");
return (0);
}
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_FROZEN);
break;
case 16: /* gold */
case 15: /* gold */
GET_GOLD(vict) = RANGE(0, 100000000);
break;
case 17: /* height */
case 16: /* height */
GET_HEIGHT(vict) = value;
affect_total(vict);
break;
case 18: /* hit */
case 17: /* hit */
vict->points.hit = RANGE(-9, vict->points.max_hit);
affect_total(vict);
break;
case 19: /* hitroll */
vict->points.hitroll = RANGE(-20, 20);
affect_total(vict);
break;
case 20: /* hunger */
case 18: /* hunger */
if (!str_cmp(val_arg, "off")) {
GET_COND(vict, HUNGER) = -1;
send_to_char(ch, "%s's hunger is now off.\r\n", GET_NAME(vict));
@ -3442,7 +3431,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
return (0);
}
break;
case 21: /* int */
case 19: /* int */
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
RANGE(3, 25);
else
@ -3450,20 +3439,20 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
vict->real_abils.intel = value;
affect_total(vict);
break;
case 22: /* invis */
case 20: /* invis */
if (GET_LEVEL(ch) < LVL_IMPL && ch != vict) {
send_to_char(ch, "You aren't godly enough for that!\r\n");
return (0);
}
GET_INVIS_LEV(vict) = RANGE(0, GET_LEVEL(vict));
break;
case 23: /* invistart */
case 21: /* invistart */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_INVSTART);
break;
case 24: /* killer */
case 22: /* killer */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_KILLER);
break;
case 25: /* level */
case 23: /* level */
if ((!IS_NPC(vict) && value > GET_LEVEL(ch)) || value > LVL_IMPL) {
send_to_char(ch, "You can't do that.\r\n");
return (0);
@ -3471,7 +3460,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
RANGE(1, LVL_IMPL);
vict->player.level = value;
break;
case 26: /* loadroom */
case 24: /* loadroom */
if (!str_cmp(val_arg, "off")) {
REMOVE_BIT_AR(PLR_FLAGS(vict), PLR_LOADROOM);
} else if (is_number(val_arg)) {
@ -3489,27 +3478,27 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
return (0);
}
break;
case 27: /* mana */
case 25: /* mana */
vict->points.mana = RANGE(0, vict->points.max_mana);
affect_total(vict);
break;
case 28: /* maxhit */
case 26: /* maxhit */
vict->points.max_hit = RANGE(1, 5000);
affect_total(vict);
break;
case 29: /* maxmana */
case 27: /* maxmana */
vict->points.max_mana = RANGE(1, 5000);
affect_total(vict);
break;
case 30: /* maxmove */
case 28: /* maxmove */
vict->points.max_move = RANGE(1, 5000);
affect_total(vict);
break;
case 31: /* move */
case 29: /* move */
vict->points.move = RANGE(0, vict->points.max_move);
affect_total(vict);
break;
case 32: /* name */
case 30: /* name */
if (ch != vict && GET_LEVEL(ch) < LVL_IMPL) {
send_to_char(ch, "Only Imps can change the name of other players.\r\n");
return (0);
@ -3519,24 +3508,24 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
return (0);
}
break;
case 33: /* nodelete */
case 31: /* nodelete */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_NODELETE);
break;
case 34: /* nohassle */
case 32: /* nohassle */
if (GET_LEVEL(ch) < LVL_GOD && ch != vict) {
send_to_char(ch, "You aren't godly enough for that!\r\n");
return (0);
}
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_NOHASSLE);
break;
case 35: /* nosummon */
case 33: /* nosummon */
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_SUMMONABLE);
send_to_char(ch, "Nosummon %s for %s.\r\n", ONOFF(!on), GET_NAME(vict));
break;
case 36: /* nowiz */
case 34: /* nowiz */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_NOWIZLIST);
break;
case 37: /* olc */
case 35: /* olc */
if (is_abbrev(val_arg, "socials") || is_abbrev(val_arg, "actions") || is_abbrev(val_arg, "aedit"))
GET_OLC_ZONE(vict) = AEDIT_PERMISSION;
else if (is_abbrev(val_arg, "hedit") || is_abbrev(val_arg, "help"))
@ -3551,7 +3540,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
} else
GET_OLC_ZONE(vict) = atoi(val_arg);
break;
case 38: /* password */
case 36: /* password */
if (GET_LEVEL(vict) >= LVL_GRGOD) {
send_to_char(ch, "You cannot change that.\r\n");
return (0);
@ -3560,7 +3549,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
*(GET_PASSWD(vict) + MAX_PWD_LENGTH) = '\0';
send_to_char(ch, "Password changed to '%s'.\r\n", val_arg);
break;
case 39: /* poofin */
case 37: /* poofin */
if ((vict == ch) || (GET_LEVEL(ch) == LVL_IMPL)) {
skip_spaces(&val_arg);
parse_at(val_arg);
@ -3574,7 +3563,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
POOFIN(vict) = strdup(val_arg);
}
break;
case 40: /* poofout */
case 38: /* poofout */
if ((vict == ch) || (GET_LEVEL(ch) == LVL_IMPL)) {
skip_spaces(&val_arg);
parse_at(val_arg);
@ -3588,10 +3577,10 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
POOFOUT(vict) = strdup(val_arg);
}
break;
case 41: /* quest */
case 39: /* quest */
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_QUEST);
break;
case 42: /* room */
case 40: /* room */
if ((rnum = real_room(value)) == NOWHERE) {
send_to_char(ch, "No room exists with that number.\r\n");
return (0);
@ -3600,23 +3589,23 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
char_from_room(vict);
char_to_room(vict, rnum);
break;
case 43: /* screenwidth */
case 41: /* screenwidth */
GET_SCREEN_WIDTH(vict) = RANGE(40, 200);
break;
case 44: /* sex */
case 42: /* sex */
if ((i = search_block(val_arg, genders, FALSE)) < 0) {
send_to_char(ch, "Must be 'male', 'female', or 'neutral'.\r\n");
return (0);
}
GET_SEX(vict) = i;
break;
case 45: /* showvnums */
case 43: /* showvnums */
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_SHOWVNUMS);
break;
case 46: /* siteok */
case 44: /* siteok */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_SITEOK);
break;
case 47: /* skills/spells */
case 45: /* skills/spells */
{
char local_buf[MAX_INPUT_LENGTH], *value_arg, *name_end;
char skill_name[MAX_INPUT_LENGTH];
@ -3701,7 +3690,7 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
}
break;
case 48: /* str */
case 46: /* str */
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
RANGE(3, 25);
else
@ -3710,16 +3699,16 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
vict->real_abils.str_add = 0;
affect_total(vict);
break;
case 49: /* stradd */
case 47: /* stradd */
vict->real_abils.str_add = RANGE(0, 100);
if (value > 0)
vict->real_abils.str = 18;
affect_total(vict);
break;
case 50: /* thief */
case 48: /* thief */
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_THIEF);
break;
case 51: /* thirst */
case 49: /* thirst */
if (!str_cmp(val_arg, "off")) {
GET_COND(vict, THIRST) = -1;
send_to_char(ch, "%s's thirst is now off.\r\n", GET_NAME(vict));
@ -3733,17 +3722,17 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
return (0);
}
break;
case 52: /* title */
case 50: /* title */
set_title(vict, val_arg);
send_to_char(ch, "%s's title is now: %s\r\n", GET_NAME(vict), GET_TITLE(vict));
break;
case 53: /* variable */
case 51: /* variable */
return perform_set_dg_var(ch, vict, val_arg);
case 54: /* weight */
case 52: /* weight */
GET_WEIGHT(vict) = value;
affect_total(vict);
break;
case 55: /* wis */
case 53: /* wis */
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
RANGE(3, 25);
else
@ -3751,10 +3740,10 @@ static int perform_set(struct char_data *ch, struct char_data *vict, int mode, c
vict->real_abils.wis = value;
affect_total(vict);
break;
case 56: /* questpoints */
case 54: /* questpoints */
GET_QUESTPOINTS(vict) = RANGE(0, 100000000);
break;
case 57: /* questhistory */
case 55: /* questhistory */
qvnum = atoi(val_arg);
if (real_quest(qvnum) == NOTHING) {
send_to_char(ch, "That quest doesn't exist.\r\n");
@ -3956,9 +3945,6 @@ ACMD(do_links)
/* Zone Checker Code below */
/*mob limits*/
#define MAX_DAMROLL_ALLOWED MAX(GET_LEVEL(mob)/5, 1)
#define MAX_HITROLL_ALLOWED MAX(GET_LEVEL(mob)/3, 1)
#define MAX_MOB_GOLD_ALLOWED GET_LEVEL(mob)*3000
#define MAX_EXP_ALLOWED GET_LEVEL(mob)*GET_LEVEL(mob) * 120
#define MAX_LEVEL_ALLOWED LVL_IMPL
#define GET_OBJ_AVG_DAM(obj) (((GET_OBJ_VAL(obj, 2) + 1) / 2.0) * GET_OBJ_VAL(obj, 1))
@ -4021,8 +4007,6 @@ static struct zcheck_affs {
{APPLY_GOLD, 0, 0, "gold"},
{APPLY_EXP, 0, 0, "experience"},
{APPLY_AC, -10, 10, "magical AC"},
{APPLY_HITROLL, 0, -99, "hitroll"}, /* Handled seperately below */
{APPLY_DAMROLL, 0, -99, "damroll"}, /* Handled seperately below */
{APPLY_SAVING_PARA, -2, 2, "saving throw (paralysis)"},
{APPLY_SAVING_ROD, -2, 2, "saving throw (rod)"},
{APPLY_SAVING_PETRI,-2, 2, "saving throw (death)"},
@ -4030,10 +4014,6 @@ static struct zcheck_affs {
{APPLY_SAVING_SPELL,-2, 2, "saving throw (spell)"}
};
/* These are ABS() values. */
#define MAX_APPLY_HITROLL_TOTAL 5
#define MAX_APPLY_DAMROLL_TOTAL 5
/*room limits*/
/* Off limit zones are any zones a player should NOT be able to walk to (ex. Limbo) */
static const int offlimit_zones[] = {0,12,13,14,-1}; /*what zones can no room connect to (virtual num) */
@ -4047,7 +4027,7 @@ ACMD (do_zcheck)
struct char_data *mob = NULL;
room_vnum exroom=0;
int ac=0;
int affs=0, tohit, todam, value;
int affs=0, value;
int i = 0, j = 0, k = 0, l = 0, m = 0, found = 0; /* found is used as a 'send now' flag*/
char buf[MAX_STRING_LENGTH];
float avg_dam;
@ -4099,18 +4079,8 @@ ACMD (do_zcheck)
"- Is level %d (limit: 1-%d)\r\n",
GET_LEVEL(mob), MAX_LEVEL_ALLOWED);
if (GET_DAMROLL(mob)>MAX_DAMROLL_ALLOWED && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- Damroll of %d is too high (limit: %d)\r\n",
GET_DAMROLL(mob), MAX_DAMROLL_ALLOWED);
if (GET_HITROLL(mob)>MAX_HITROLL_ALLOWED && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- Hitroll of %d is too high (limit: %d)\r\n",
GET_HITROLL(mob), MAX_HITROLL_ALLOWED);
/* avg. dam including damroll per round of combat */
avg_dam = (((mob->mob_specials.damsizedice / 2.0) * mob->mob_specials.damnodice)+GET_DAMROLL(mob));
/* avg. dam per round of combat */
avg_dam = (((mob->mob_specials.damsizedice / 2.0)));
if (avg_dam>MAX_MOB_DAM_ALLOWED && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- average damage of %4.1f is too high (limit: %d)\r\n",
@ -4127,12 +4097,6 @@ ACMD (do_zcheck)
len += snprintf(buf + len, sizeof(buf) - len,
"- Both aggresive and agressive to align.\r\n");
if ((GET_GOLD(mob) > MAX_MOB_GOLD_ALLOWED) && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- Set to %d Gold (limit : %d).\r\n",
GET_GOLD(mob),
MAX_MOB_GOLD_ALLOWED);
if (GET_EXP(mob)>MAX_EXP_ALLOWED && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- Has %d experience (limit: %d)\r\n",
@ -4265,22 +4229,6 @@ ACMD (do_zcheck)
zaffs[(int)obj->affected[j].location].min_aff,
zaffs[(int)obj->affected[j].location].max_aff);
/* special handling of +hit and +dam because of +hit_n_dam */
for (todam=0, tohit=0, j=0;j<MAX_OBJ_AFFECT;j++) {
if (obj->affected[j].location == APPLY_HITROLL)
tohit += obj->affected[j].modifier;
if (obj->affected[j].location == APPLY_DAMROLL)
todam += obj->affected[j].modifier;
}
if (abs(todam) > MAX_APPLY_DAMROLL_TOTAL && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- total damroll %d out of range (limit +/-%d.\r\n",
todam, MAX_APPLY_DAMROLL_TOTAL);
if (abs(tohit) > MAX_APPLY_HITROLL_TOTAL && (found=1))
len += snprintf(buf + len, sizeof(buf) - len,
"- total hitroll %d out of range (limit +/-%d).\r\n",
tohit, MAX_APPLY_HITROLL_TOTAL);
for (ext2 = NULL, ext = obj->ex_description; ext; ext = ext->next)
if (strncmp(ext->description, " ", 3))

View file

@ -509,8 +509,6 @@ const char *apply_types[] = {
"GOLD",
"EXP",
"ARMOR",
"HITROLL",
"DAMROLL",
"SAVING_PARA",
"SAVING_ROD",
"SAVING_PETRI",

View file

@ -1552,44 +1552,26 @@ static void parse_simple_mob(FILE *mob_f, int i, int nr)
exit(1);
}
if (sscanf(line, " %d %d %d %dd%d+%d %dd%d+%d ",
t, t + 1, t + 2, t + 3, t + 4, t + 5, t + 6, t + 7, t + 8) != 9) {
if (sscanf(line, " %d %dd%d+%d %dd%d ",
t, t + 1, t + 2, t + 3, t + 4, t + 5) != 6) {
log("SYSERR: Format error in mob #%d, first line after S flag\n"
"...expecting line of form '# # # #d#+# #d#+#'", nr);
"...expecting line of form '# #d#+# #d#'", nr);
exit(1);
}
GET_LEVEL(mob_proto + i) = t[0];
GET_HITROLL(mob_proto + i) = 20 - t[1];
GET_AC(mob_proto + i) = 10 * t[2];
/* max hit = 0 is a flag that H, M, V is xdy+z */
GET_MAX_HIT(mob_proto + i) = 0;
GET_HIT(mob_proto + i) = t[3];
GET_MANA(mob_proto + i) = t[4];
GET_MOVE(mob_proto + i) = t[5];
GET_HIT(mob_proto + i) = t[1];
GET_MANA(mob_proto + i) = t[2];
GET_MOVE(mob_proto + i) = t[3];
GET_MAX_MANA(mob_proto + i) = 10;
GET_MAX_MOVE(mob_proto + i) = 50;
mob_proto[i].mob_specials.damnodice = t[6];
mob_proto[i].mob_specials.damsizedice = t[7];
GET_DAMROLL(mob_proto + i) = t[8];
if (!get_line(mob_f, line)) {
log("SYSERR: Format error in mob #%d, second line after S flag\n"
"...expecting line of form '# #', but file ended!", nr);
exit(1);
}
if (sscanf(line, " %d %d ", t, t + 1) != 2) {
log("SYSERR: Format error in mob #%d, second line after S flag\n"
"...expecting line of form '# #'", nr);
exit(1);
}
GET_GOLD(mob_proto + i) = t[0];
GET_EXP(mob_proto + i) = t[1];
mob_proto[i].mob_specials.damnodice = t[4];
mob_proto[i].mob_specials.damsizedice = t[5];
if (!get_line(mob_f, line)) {
log("SYSERR: Format error in last line of mob #%d\n"
@ -3610,6 +3592,7 @@ void clear_char(struct char_data *ch)
GET_POS(ch) = POS_STANDING;
ch->mob_specials.default_pos = POS_STANDING;
ch->events = NULL;
ch->points.prof_mod = 0;
GET_AC(ch) = 100; /* Basic Armor */
if (ch->points.max_mana < 100)

View file

@ -654,13 +654,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
}
break;
case 'd':
if (!str_cmp(field, "damroll")) {
if (subfield && *subfield) {
int addition = atoi(subfield);
GET_DAMROLL(c) = MAX(1, GET_DAMROLL(c) + addition);
}
snprintf(str, slen, "%d", GET_DAMROLL(c));
} else if (!str_cmp(field, "dex")) {
if (!str_cmp(field, "dex")) {
if (subfield && *subfield) {
int addition = atoi(subfield);
int max = (IS_NPC(c) || GET_LEVEL(c) >= LVL_GRGOD) ? 25 : 18;
@ -760,13 +754,6 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
}
snprintf(str, slen, "%d", GET_HIT(c));
}
else if (!str_cmp(field, "hitroll")) {
if (subfield && *subfield) {
int addition = atoi(subfield);
GET_HITROLL(c) = MAX(1, GET_HITROLL(c) + addition);
}
snprintf(str, slen, "%d", GET_HITROLL(c));
}
else if (!str_cmp(field, "hunger")) {
if (subfield && *subfield) {
int addition = atoi(subfield);

View file

@ -384,19 +384,16 @@ int write_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd)
fprintf(fd, "%s", convert_from_tabs(buf));
fprintf(fd, "%d %d %d %d %d %d %d %d %d E\n"
"%d %d %d %dd%d+%d %dd%d+%d\n",
"%d %dd%d+%d %dd%d\n",
MOB_FLAGS(mob)[0], MOB_FLAGS(mob)[1],
MOB_FLAGS(mob)[2], MOB_FLAGS(mob)[3],
AFF_FLAGS(mob)[0], AFF_FLAGS(mob)[1],
AFF_FLAGS(mob)[2], AFF_FLAGS(mob)[3],
GET_ALIGNMENT(mob),
GET_LEVEL(mob), 20 - GET_HITROLL(mob), GET_AC(mob) / 10, GET_HIT(mob),
GET_MANA(mob), GET_MOVE(mob), GET_NDD(mob), GET_SDD(mob),
GET_DAMROLL(mob));
GET_LEVEL(mob), GET_HIT(mob),
GET_MANA(mob), GET_MOVE(mob), GET_NDD(mob), GET_SDD(mob));
fprintf(fd, "%d %d\n"
"%d %d %d\n",
GET_GOLD(mob), GET_EXP(mob),
fprintf(fd, "%d %d %d\n",
GET_POS(mob), GET_DEFAULT_POS(mob), GET_SEX(mob)
);

View file

@ -613,19 +613,16 @@ static int export_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd)
);
fprintf(fd, "%d %d %d %d %d %d %d %d %d E\n"
"%d %d %d %dd%d+%d %dd%d+%d\n",
"%d %dd%d+%d %dd%d\n",
MOB_FLAGS(mob)[0], MOB_FLAGS(mob)[1],
MOB_FLAGS(mob)[2], MOB_FLAGS(mob)[3],
AFF_FLAGS(mob)[0], AFF_FLAGS(mob)[1],
AFF_FLAGS(mob)[2], AFF_FLAGS(mob)[3],
GET_ALIGNMENT(mob),
GET_LEVEL(mob), 20 - GET_HITROLL(mob), GET_AC(mob) / 10, GET_HIT(mob),
GET_MANA(mob), GET_MOVE(mob), GET_NDD(mob), GET_SDD(mob),
GET_DAMROLL(mob));
GET_LEVEL(mob), GET_HIT(mob),
GET_MANA(mob), GET_MOVE(mob), GET_NDD(mob), GET_SDD(mob));
fprintf(fd, "%d %d\n"
"%d %d %d\n",
GET_GOLD(mob), GET_EXP(mob),
fprintf(fd, "%d %d %d\n",
GET_POS(mob), GET_DEFAULT_POS(mob), GET_SEX(mob)
);

View file

@ -171,12 +171,8 @@ static void aff_apply_modify(struct char_data *ch, byte loc, sbyte mod, char *ms
GET_AC(ch) += mod;
break;
case APPLY_HITROLL:
GET_HITROLL(ch) += mod;
break;
case APPLY_DAMROLL:
GET_DAMROLL(ch) += mod;
case APPLY_PROFICIENCY:
GET_PROF_MOD(ch) += mod;
break;
case APPLY_SAVING_PARA:
@ -233,27 +229,37 @@ void affect_total(struct char_data *ch)
struct affected_type *af;
int i, j;
/* First, remove all object-based modifiers. */
for (i = 0; i < NUM_WEARS; i++) {
if (GET_EQ(ch, i))
for (j = 0; j < MAX_OBJ_AFFECT; j++)
affect_modify_ar(ch, GET_EQ(ch, i)->affected[j].location,
GET_EQ(ch, i)->affected[j].modifier,
GET_OBJ_AFFECT(GET_EQ(ch, i)), FALSE);
affect_modify_ar(ch,
GET_EQ(ch, i)->affected[j].location,
GET_EQ(ch, i)->affected[j].modifier,
GET_OBJ_AFFECT(GET_EQ(ch, i)), FALSE);
}
/* Then remove all spell/affect modifiers. */
for (af = ch->affected; af; af = af->next)
affect_modify_ar(ch, af->location, af->modifier, af->bitvector, FALSE);
/* Reset derived abilities to real abilities. */
ch->aff_abils = ch->real_abils;
/* Reset transient modifiers that are re-applied below. */
GET_PROF_MOD(ch) = 0; /* Proficiency delta (from APPLY_PROFICIENCY) */
/* Re-apply object-based modifiers. */
for (i = 0; i < NUM_WEARS; i++) {
if (GET_EQ(ch, i))
for (j = 0; j < MAX_OBJ_AFFECT; j++)
affect_modify_ar(ch, GET_EQ(ch, i)->affected[j].location,
GET_EQ(ch, i)->affected[j].modifier,
GET_OBJ_AFFECT(GET_EQ(ch, i)), TRUE);
affect_modify_ar(ch,
GET_EQ(ch, i)->affected[j].location,
GET_EQ(ch, i)->affected[j].modifier,
GET_OBJ_AFFECT(GET_EQ(ch, i)), TRUE);
}
/* Re-apply spell/affect modifiers. */
for (af = ch->affected; af; af = af->next)
affect_modify_ar(ch, af->location, af->modifier, af->bitvector, TRUE);

View file

@ -339,7 +339,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim,
break;
case SPELL_BLESS:
af[0].location = APPLY_HITROLL;
af[0].location = GET_SPELL_ABILITY_MOD(ch);
af[0].modifier = 2;
af[0].duration = 6;
@ -357,7 +357,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim,
return;
}
af[0].location = APPLY_HITROLL;
af[0].location = GET_SPELL_ABILITY_MOD(ch);
af[0].modifier = -4;
af[0].duration = 2;
SET_BIT_AR(af[0].bitvector, AFF_BLIND);
@ -377,12 +377,12 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim,
return;
}
af[0].location = APPLY_HITROLL;
af[0].location = GET_SPELL_ABILITY_MOD(ch);
af[0].duration = 1 + (GET_LEVEL(ch) / 2);
af[0].modifier = -1;
SET_BIT_AR(af[0].bitvector, AFF_CURSE);
af[1].location = APPLY_DAMROLL;
af[1].location = GET_SPELL_ABILITY_MOD(ch);
af[1].duration = 1 + (GET_LEVEL(ch) / 2);
af[1].modifier = -1;
SET_BIT_AR(af[1].bitvector, AFF_CURSE);

View file

@ -479,26 +479,13 @@ static void medit_disp_stats_menu(struct descriptor_data *d)
"Hit Points (xdy+z): Bare Hand Damage (xdy+z): \r\n"
"(%s3%s) HP NumDice: %s[%s%5d%s]%s (%s6%s) BHD NumDice: %s[%s%5d%s]%s\r\n"
"(%s4%s) HP SizeDice: %s[%s%5d%s]%s (%s7%s) BHD SizeDice: %s[%s%5d%s]%s\r\n"
"(%s5%s) HP Addition: %s[%s%5d%s]%s (%s8%s) DamRoll: %s[%s%5d%s]%s\r\n"
"%-*s(range %s%d%s to %s%d%s)\r\n\r\n"
"(%sA%s) Armor Class: %s[%s%4d%s]%s (%sD%s) Hitroll: %s[%s%5d%s]%s\r\n"
"(%sB%s) Exp Points: %s[%s%10d%s]%s (%sE%s) Alignment: %s[%s%5d%s]%s\r\n"
"(%sC%s) Gold: %s[%s%10d%s]%s\r\n\r\n",
"(%s5%s) HP Addition: %s[%s%5d%s]%s (%s8%s) Alignment: %s[%s%5d%s]%s\r\n\r\n",
cyn, yel, OLC_NUM(d), cyn, nrm,
cyn, nrm, cyn, yel, GET_LEVEL(mob), cyn, nrm,
cyn, nrm, cyn, nrm,
cyn, nrm, cyn, yel, GET_HIT(mob), cyn, nrm, cyn, nrm, cyn, yel, GET_NDD(mob), cyn, nrm,
cyn, nrm, cyn, yel, GET_MANA(mob), cyn, nrm, cyn, nrm, cyn, yel, GET_SDD(mob), cyn, nrm,
cyn, nrm, cyn, yel, GET_MOVE(mob), cyn, nrm, cyn, nrm, cyn, yel, GET_DAMROLL(mob), cyn, nrm,
count_color_chars(buf)+28, buf,
yel, GET_NDD(mob) + GET_DAMROLL(mob), nrm,
yel, (GET_NDD(mob) * GET_SDD(mob)) + GET_DAMROLL(mob), nrm,
cyn, nrm, cyn, yel, GET_AC(mob), cyn, nrm, cyn, nrm, cyn, yel, GET_HITROLL(mob), cyn, nrm,
cyn, nrm, cyn, yel, GET_EXP(mob), cyn, nrm, cyn, nrm, cyn, yel, GET_ALIGNMENT(mob), cyn, nrm,
cyn, nrm, cyn, yel, GET_GOLD(mob), cyn, nrm
cyn, nrm, cyn, yel, GET_MOVE(mob), cyn, nrm, cyn, nrm, cyn, yel, GET_ALIGNMENT(mob), cyn, nrm
);
if (CONFIG_MEDIT_ADVANCED) {
@ -701,31 +688,6 @@ void medit_parse(struct descriptor_data *d, char *arg)
i++;
break;
case '8':
OLC_MODE(d) = MEDIT_DAMROLL;
i++;
break;
case 'a':
case 'A':
OLC_MODE(d) = MEDIT_AC;
i++;
break;
case 'b':
case 'B':
OLC_MODE(d) = MEDIT_EXP;
i++;
break;
case 'c':
case 'C':
OLC_MODE(d) = MEDIT_GOLD;
i++;
break;
case 'd':
case 'D':
OLC_MODE(d) = MEDIT_HITROLL;
i++;
break;
case 'e':
case 'E':
OLC_MODE(d) = MEDIT_ALIGNMENT;
i++;
break;
@ -914,18 +876,6 @@ void medit_parse(struct descriptor_data *d, char *arg)
GET_SEX(OLC_MOB(d)) = LIMIT(i - 1, 0, NUM_GENDERS - 1);
break;
case MEDIT_HITROLL:
GET_HITROLL(OLC_MOB(d)) = LIMIT(i, 0, 50);
OLC_VAL(d) = TRUE;
medit_disp_stats_menu(d);
return;
case MEDIT_DAMROLL:
GET_DAMROLL(OLC_MOB(d)) = LIMIT(i, 0, 50);
OLC_VAL(d) = TRUE;
medit_disp_stats_menu(d);
return;
case MEDIT_NDD:
GET_NDD(OLC_MOB(d)) = LIMIT(i, 0, 30);
OLC_VAL(d) = TRUE;
@ -956,24 +906,6 @@ void medit_parse(struct descriptor_data *d, char *arg)
medit_disp_stats_menu(d);
return;
case MEDIT_AC:
GET_AC(OLC_MOB(d)) = LIMIT(i, -200, 200);
OLC_VAL(d) = TRUE;
medit_disp_stats_menu(d);
return;
case MEDIT_EXP:
GET_EXP(OLC_MOB(d)) = LIMIT(i, 0, MAX_MOB_EXP);
OLC_VAL(d) = TRUE;
medit_disp_stats_menu(d);
return;
case MEDIT_GOLD:
GET_GOLD(OLC_MOB(d)) = LIMIT(i, 0, MAX_MOB_GOLD);
OLC_VAL(d) = TRUE;
medit_disp_stats_menu(d);
return;
case MEDIT_STR:
GET_STR(OLC_MOB(d)) = LIMIT(i, 11, 25);
OLC_VAL(d) = TRUE;
@ -1127,12 +1059,6 @@ void medit_autoroll_stats(struct descriptor_data *d)
GET_NDD(OLC_MOB(d)) = MAX(1, mob_lev/6); /* number damage dice 1-5 */
GET_SDD(OLC_MOB(d)) = MAX(2, mob_lev/6); /* size of damage dice 2-5 */
GET_DAMROLL(OLC_MOB(d)) = mob_lev/6; /* damroll (dam bonus) 0-5 */
GET_HITROLL(OLC_MOB(d)) = mob_lev/3; /* hitroll 0-10 */
GET_EXP(OLC_MOB(d)) = (mob_lev*mob_lev*100);
GET_GOLD(OLC_MOB(d)) = (mob_lev*10);
GET_AC(OLC_MOB(d)) = (100-(mob_lev*6)); /* AC 94 to -80 */
/* 'Advanced' stats are only rolled if advanced options are enabled */
if (CONFIG_MEDIT_ADVANCED) {

View file

@ -265,34 +265,29 @@ extern const char *nrm, *grn, *cyn, *yel;
/* Numerical responses. */
#define MEDIT_NUMERICAL_RESPONSE 10
#define MEDIT_SEX 11
#define MEDIT_HITROLL 12
#define MEDIT_DAMROLL 13
#define MEDIT_NDD 14
#define MEDIT_SDD 15
#define MEDIT_NUM_HP_DICE 16
#define MEDIT_SIZE_HP_DICE 17
#define MEDIT_ADD_HP 18
#define MEDIT_AC 19
#define MEDIT_EXP 20
#define MEDIT_GOLD 21
#define MEDIT_POS 22
#define MEDIT_DEFAULT_POS 23
#define MEDIT_ATTACK 24
#define MEDIT_LEVEL 25
#define MEDIT_ALIGNMENT 26
#define MEDIT_DELETE 27
#define MEDIT_COPY 28
#define MEDIT_STR 29
#define MEDIT_INT 30
#define MEDIT_WIS 31
#define MEDIT_DEX 32
#define MEDIT_CON 33
#define MEDIT_CHA 34
#define MEDIT_PARA 35
#define MEDIT_ROD 36
#define MEDIT_PETRI 37
#define MEDIT_BREATH 38
#define MEDIT_SPELL 39
#define MEDIT_NDD 12
#define MEDIT_SDD 13
#define MEDIT_NUM_HP_DICE 14
#define MEDIT_SIZE_HP_DICE 15
#define MEDIT_ADD_HP 16
#define MEDIT_POS 17
#define MEDIT_DEFAULT_POS 18
#define MEDIT_ATTACK 19
#define MEDIT_LEVEL 20
#define MEDIT_ALIGNMENT 21
#define MEDIT_DELETE 22
#define MEDIT_COPY 23
#define MEDIT_STR 24
#define MEDIT_INT 25
#define MEDIT_WIS 26
#define MEDIT_DEX 27
#define MEDIT_CON 28
#define MEDIT_CHA 29
#define MEDIT_PARA 30
#define MEDIT_ROD 31
#define MEDIT_PETRI 32
#define MEDIT_BREATH 33
#define MEDIT_SPELL 34
/* Submodes of SEDIT connectedness. */
#define SEDIT_MAIN_MENU 0

View file

@ -33,8 +33,6 @@
#define PFDEF_GOLD 0
#define PFDEF_BANK 0
#define PFDEF_EXP 0
#define PFDEF_HITROLL 0
#define PFDEF_DAMROLL 0
#define PFDEF_AC 0
#define PFDEF_STR 0
#define PFDEF_STRADD 0

View file

@ -268,8 +268,6 @@ int load_char(const char *name, struct char_data *ch)
GET_GOLD(ch) = PFDEF_GOLD;
GET_BANK_GOLD(ch) = PFDEF_BANK;
GET_EXP(ch) = PFDEF_EXP;
GET_HITROLL(ch) = PFDEF_HITROLL;
GET_DAMROLL(ch) = PFDEF_DAMROLL;
GET_AC(ch) = PFDEF_AC;
ch->real_abils.str = PFDEF_STR;
ch->real_abils.str_add = PFDEF_STRADD;
@ -348,7 +346,6 @@ int load_char(const char *name, struct char_data *ch)
if (!strcmp(tag, "Desc")) ch->player.description = fread_string(fl, buf2);
else if (!strcmp(tag, "Dex ")) ch->real_abils.dex = atoi(line);
else if (!strcmp(tag, "Drnk")) GET_COND(ch, DRUNK) = atoi(line);
else if (!strcmp(tag, "Drol")) GET_DAMROLL(ch) = atoi(line);
break;
case 'E':
@ -371,7 +368,6 @@ int load_char(const char *name, struct char_data *ch)
free(GET_HOST(ch));
GET_HOST(ch) = strdup(line);
}
else if (!strcmp(tag, "Hrol")) GET_HITROLL(ch) = atoi(line);
else if (!strcmp(tag, "Hung")) GET_COND(ch, HUNGER) = atoi(line);
break;
@ -651,8 +647,6 @@ void save_char(struct char_data * ch)
if (GET_GOLD(ch) != PFDEF_GOLD) fprintf(fl, "Gold: %d\n", GET_GOLD(ch));
if (GET_BANK_GOLD(ch) != PFDEF_BANK) fprintf(fl, "Bank: %d\n", GET_BANK_GOLD(ch));
if (GET_EXP(ch) != PFDEF_EXP) fprintf(fl, "Exp : %d\n", GET_EXP(ch));
if (GET_HITROLL(ch) != PFDEF_HITROLL) fprintf(fl, "Hrol: %d\n", GET_HITROLL(ch));
if (GET_DAMROLL(ch) != PFDEF_DAMROLL) fprintf(fl, "Drol: %d\n", GET_DAMROLL(ch));
if (GET_OLC_ZONE(ch) != PFDEF_OLC) fprintf(fl, "Olc : %d\n", GET_OLC_ZONE(ch));
if (GET_PAGE_LENGTH(ch) != PFDEF_PAGELENGTH) fprintf(fl, "Page: %d\n", GET_PAGE_LENGTH(ch));
if (GET_SCREEN_WIDTH(ch) != PFDEF_SCREENWIDTH) fprintf(fl, "ScrW: %d\n", GET_SCREEN_WIDTH(ch));

View file

@ -149,8 +149,6 @@ static variable_name_t VariableNameTable[eMSDP_MAX+1] =
{ eMSDP_MONEY, "MONEY", NUMBER_READ_ONLY },
{ eMSDP_MOVEMENT, "MOVEMENT", NUMBER_READ_ONLY },
{ eMSDP_MOVEMENT_MAX, "MOVEMENT_MAX", NUMBER_READ_ONLY },
{ eMSDP_HITROLL, "HITROLL", NUMBER_READ_ONLY },
{ eMSDP_DAMROLL, "DAMROLL", NUMBER_READ_ONLY },
{ eMSDP_AC, "AC", NUMBER_READ_ONLY },
{ eMSDP_STR, "STR", NUMBER_READ_ONLY },
{ eMSDP_INT, "INT", NUMBER_READ_ONLY },

View file

@ -113,8 +113,6 @@ typedef enum
eMSDP_MONEY,
eMSDP_MOVEMENT,
eMSDP_MOVEMENT_MAX,
eMSDP_HITROLL,
eMSDP_DAMROLL,
eMSDP_AC,
eMSDP_STR,
eMSDP_INT,

View file

@ -372,7 +372,7 @@ ASPELL(spell_identify)
age(victim)->day, age(victim)->hours);
send_to_char(ch, "Height %d cm, Weight %d pounds\r\n", GET_HEIGHT(victim), GET_WEIGHT(victim));
send_to_char(ch, "Level: %d, Hits: %d, Mana: %d\r\n", GET_LEVEL(victim), GET_HIT(victim), GET_MANA(victim));
send_to_char(ch, "AC: %d, Hitroll: %d, Damroll: %d\r\n", compute_armor_class(victim), GET_HITROLL(victim), GET_DAMROLL(victim));
send_to_char(ch, "AC: %d\r\n", compute_armor_class(victim));
send_to_char(ch, "Str: %d/%d, Int: %d, Wis: %d, Dex: %d, Con: %d, Cha: %d\r\n",
GET_STR(victim), GET_ADD(victim), GET_INT(victim),
GET_WIS(victim), GET_DEX(victim), GET_CON(victim), GET_CHA(victim));
@ -399,10 +399,10 @@ ASPELL(spell_enchant_weapon)
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_MAGIC);
obj->affected[0].location = APPLY_HITROLL;
obj->affected[0].location = APPLY_PROFICIENCY;
obj->affected[0].modifier = 1 + (level >= 18);
obj->affected[1].location = APPLY_DAMROLL;
obj->affected[1].location = APPLY_PROFICIENCY;
obj->affected[1].modifier = 1 + (level >= 20);
if (IS_GOOD(ch)) {

View file

@ -463,15 +463,14 @@
#define APPLY_GOLD 15 /**< Reserved */
#define APPLY_EXP 16 /**< Reserved */
#define APPLY_AC 17 /**< Apply to Armor Class */
#define APPLY_HITROLL 18 /**< Apply to hitroll */
#define APPLY_DAMROLL 19 /**< Apply to damage roll */
#define APPLY_SAVING_PARA 20 /**< Apply to save throw: paralysis */
#define APPLY_SAVING_ROD 21 /**< Apply to save throw: rods */
#define APPLY_SAVING_PETRI 22 /**< Apply to save throw: petrif */
#define APPLY_SAVING_BREATH 23 /**< Apply to save throw: breath */
#define APPLY_SAVING_SPELL 24 /**< Apply to save throw: spells */
#define APPLY_PROFICIENCY 18 /**< Apply to Proficiency Bonus */
#define APPLY_SAVING_PARA 19 /**< Apply to save throw: paralysis */
#define APPLY_SAVING_ROD 20 /**< Apply to save throw: rods */
#define APPLY_SAVING_PETRI 21 /**< Apply to save throw: petrif */
#define APPLY_SAVING_BREATH 22 /**< Apply to save throw: breath */
#define APPLY_SAVING_SPELL 23 /**< Apply to save throw: spells */
/** Total number of applies */
#define NUM_APPLIES 25
#define NUM_APPLIES 24
/* Equals the total number of SAVING_* defines in spells.h */
#define NUM_OF_SAVING_THROWS 5
@ -917,12 +916,11 @@ struct char_point_data
* Dungeons and Dragons method of dealing with character defense, or
* Armor class. */
sh_int armor;
sh_int prof_mod; /**< Equipment/affect delta to proficiency bonus */
int gold; /**< Current gold carried on character */
int bank_gold; /**< Gold the char has in a bank account */
int exp; /**< The experience points, or value, of the character. */
sbyte hitroll; /**< Any bonus or penalty to the hit roll */
sbyte damroll; /**< Any bonus or penalty to the damage roll */
};
/** char_special_data_saved: specials which both a PC and an NPC have in

View file

@ -49,8 +49,6 @@ struct char_point_data_plrtoascii {
int bank_gold; /* Gold the char has in a bank account */
int exp; /* The experience of the player */
sbyte hitroll; /* Any bonus or penalty to the hit roll */
sbyte damroll; /* Any bonus or penalty to the damage roll */
};
@ -303,10 +301,6 @@ void convert(char *filename)
fprintf(outfile, "Bank: %d\n", cpd->bank_gold);
if (cpd->exp != PFDEF_EXP)
fprintf(outfile, "Exp : %d\n", cpd->exp);
if (cpd->hitroll != PFDEF_HITROLL)
fprintf(outfile, "Hrol: %d\n", cpd->hitroll);
if (cpd->damroll != PFDEF_DAMROLL)
fprintf(outfile, "Drol: %d\n", cpd->damroll);
/* affected_type */
fprintf(outfile, "Affs:\n");

View file

@ -550,6 +550,8 @@ do \
#define GET_EXP(ch) ((ch)->points.exp)
/** Armor class of ch. */
#define GET_AC(ch) ((ch)->points.armor)
/** Proficiency bonus of ch. */
#define GET_PROF_MOD(ch) ((ch)->points.prof_mod)
/** Current hit points (health) of ch. */
#define GET_HIT(ch) ((ch)->points.hit)
/** Maximum hit points of ch. */
@ -566,10 +568,6 @@ do \
#define GET_GOLD(ch) ((ch)->points.gold)
/** Gold in bank of ch. */
#define GET_BANK_GOLD(ch) ((ch)->points.bank_gold)
/** Current to-hit roll modifier for ch. */
#define GET_HITROLL(ch) ((ch)->points.hitroll)
/** Current damage roll modifier for ch. */
#define GET_DAMROLL(ch) ((ch)->points.damroll)
/** Current position (standing, sitting) of ch. */
#define GET_POS(ch) ((ch)->char_specials.position)