Compare commits
7 Commits
feature/14
...
237948350d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
237948350d | ||
|
|
7ab0918c9c | ||
|
|
1678f66809 | ||
| e0083e3767 | |||
| c8e9cd8dc6 | |||
| 44a7ac0308 | |||
|
|
4e1680db1a |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -11,8 +11,6 @@ src/.accepted
|
|||||||
src/depend
|
src/depend
|
||||||
src/util/depend
|
src/util/depend
|
||||||
build/*
|
build/*
|
||||||
# generated by CLion
|
|
||||||
cmake-build-*
|
|
||||||
|
|
||||||
# Do not commit files from players
|
# Do not commit files from players
|
||||||
lib/plrfiles/A-E/*
|
lib/plrfiles/A-E/*
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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?
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -11,3 +11,4 @@
|
|||||||
Gods
|
Gods
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
|
kyonshi
|
||||||
|
|||||||
17
lib/world/obj/49.obj
Normal file
17
lib/world/obj/49.obj
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#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.
|
||||||
|
~
|
||||||
|
$
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
10
lib/world/wld/49.wld
Normal 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
|
||||||
|
$
|
||||||
131
lib/world/wld/491.wld
Normal file
131
lib/world/wld/491.wld
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
#49100
|
||||||
|
The Common Room~
|
||||||
|
You are in the woodpaneled common 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 deserted bar.
|
||||||
|
To the South is the Entry Hall.
|
||||||
|
~
|
||||||
|
491 de 0 0 0 0
|
||||||
|
D2
|
||||||
|
You see the Entry Hall to the Grenzland Building.
|
||||||
|
~
|
||||||
|
~
|
||||||
|
1 -1 49101
|
||||||
|
E
|
||||||
|
note bar~
|
||||||
|
The note reads:
|
||||||
|
|
||||||
|
The bar is closed until I can figure out the format of .shp files.
|
||||||
|
- a.
|
||||||
|
~
|
||||||
|
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 Common Room. To the East you see the Grenzland Shop. To
|
||||||
|
the South you see the Entry Hall. To the South is a Dark Alley in
|
||||||
|
Midgaard. To the West is a door with a small note pinned to it. A
|
||||||
|
double staircase leads up to the Balcony.
|
||||||
|
~
|
||||||
|
491 de 0 0 0 0
|
||||||
|
D0
|
||||||
|
You see the Common 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. It looks deserted (for now). To
|
||||||
|
the West is the Common Room. There is a small note pinned to the
|
||||||
|
counter.
|
||||||
|
~
|
||||||
|
491 de 0 0 0 0
|
||||||
|
D3
|
||||||
|
You see the Entry Hall.
|
||||||
|
~
|
||||||
|
~
|
||||||
|
1 -1 49101
|
||||||
|
E
|
||||||
|
note~
|
||||||
|
The note reads:
|
||||||
|
|
||||||
|
The store is closed until I can figure out the format of .shp files.
|
||||||
|
- a.
|
||||||
|
~
|
||||||
|
S
|
||||||
|
#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 -1 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 -1 49110
|
||||||
|
S
|
||||||
|
#49112
|
||||||
|
The Library~
|
||||||
|
Not much to see here (for now).
|
||||||
|
~
|
||||||
|
491 de 0 0 0 0
|
||||||
|
D2
|
||||||
|
You see the Balcony above the Entry.
|
||||||
|
~
|
||||||
|
~
|
||||||
|
1 -1 49110
|
||||||
|
S
|
||||||
|
$
|
||||||
@@ -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,7 @@
|
|||||||
343.wld
|
343.wld
|
||||||
345.wld
|
345.wld
|
||||||
346.wld
|
346.wld
|
||||||
|
491.wld
|
||||||
555.wld
|
555.wld
|
||||||
556.wld
|
556.wld
|
||||||
653.wld
|
653.wld
|
||||||
|
|||||||
7
lib/world/zon/49.zon
Normal file
7
lib/world/zon/49.zon
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#49
|
||||||
|
GrenzlandMUD~
|
||||||
|
Grenzland~
|
||||||
|
4900 4999 15 2 d 0 0 0 1 33
|
||||||
|
S
|
||||||
|
$
|
||||||
|
|
||||||
10
lib/world/zon/491.zon
Normal file
10
lib/world/zon/491.zon
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#491
|
||||||
|
GrenzlandMUD~
|
||||||
|
Grenzland Building~
|
||||||
|
49100 49199 15 2 d 0 0 0 1 33
|
||||||
|
R 0 49101 4900 -1 (a bulletin board)
|
||||||
|
O 0 4900 99 49101 (a bulletin board)
|
||||||
|
D 0 49110 1 1
|
||||||
|
D 0 49111 3 1
|
||||||
|
S
|
||||||
|
$
|
||||||
@@ -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,7 @@
|
|||||||
343.zon
|
343.zon
|
||||||
345.zon
|
345.zon
|
||||||
346.zon
|
346.zon
|
||||||
|
491.zon
|
||||||
555.zon
|
555.zon
|
||||||
556.zon
|
556.zon
|
||||||
653.zon
|
653.zon
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|
||||||
|
|||||||
83
src/fight.c
83
src/fight.c
@@ -56,7 +56,7 @@ static struct char_data *next_combat_list = NULL;
|
|||||||
/* local file scope utility functions */
|
/* local file scope utility functions */
|
||||||
static void perform_group_gain(struct char_data *ch, int base, struct char_data *victim);
|
static void perform_group_gain(struct char_data *ch, int base, struct char_data *victim);
|
||||||
static void dam_message(int dam, struct char_data *ch, struct char_data *victim, int w_type);
|
static void dam_message(int dam, struct char_data *ch, struct char_data *victim, int w_type);
|
||||||
static obj_data *make_corpse(struct char_data *ch);
|
static void make_corpse(struct char_data *ch);
|
||||||
static void change_alignment(struct char_data *ch, struct char_data *victim);
|
static void change_alignment(struct char_data *ch, struct char_data *victim);
|
||||||
static void group_gain(struct char_data *ch, struct char_data *victim);
|
static void group_gain(struct char_data *ch, struct char_data *victim);
|
||||||
static void solo_gain(struct char_data *ch, struct char_data *victim);
|
static void solo_gain(struct char_data *ch, struct char_data *victim);
|
||||||
@@ -161,7 +161,7 @@ void stop_fighting(struct char_data *ch)
|
|||||||
update_pos(ch);
|
update_pos(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static obj_data *make_corpse(struct char_data *ch)
|
static void make_corpse(struct char_data *ch)
|
||||||
{
|
{
|
||||||
char buf2[MAX_NAME_LENGTH + 64];
|
char buf2[MAX_NAME_LENGTH + 64];
|
||||||
struct obj_data *corpse, *o;
|
struct obj_data *corpse, *o;
|
||||||
@@ -229,7 +229,6 @@ static obj_data *make_corpse(struct char_data *ch)
|
|||||||
IS_CARRYING_W(ch) = 0;
|
IS_CARRYING_W(ch) = 0;
|
||||||
|
|
||||||
obj_to_room(corpse, IN_ROOM(ch));
|
obj_to_room(corpse, IN_ROOM(ch));
|
||||||
return corpse;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* When ch kills victim */
|
/* When ch kills victim */
|
||||||
@@ -251,10 +250,9 @@ void death_cry(struct 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");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct obj_data *raw_kill(struct char_data *ch, struct char_data *killer)
|
void raw_kill(struct char_data * ch, struct char_data * killer)
|
||||||
{
|
{
|
||||||
struct char_data *i;
|
struct char_data *i;
|
||||||
obj_data *corpse;
|
|
||||||
|
|
||||||
if (FIGHTING(ch))
|
if (FIGHTING(ch))
|
||||||
stop_fighting(ch);
|
stop_fighting(ch);
|
||||||
@@ -286,24 +284,23 @@ struct obj_data *raw_kill(struct char_data *ch, struct char_data *killer)
|
|||||||
|
|
||||||
update_pos(ch);
|
update_pos(ch);
|
||||||
|
|
||||||
corpse = make_corpse(ch);
|
make_corpse(ch);
|
||||||
extract_char(ch);
|
extract_char(ch);
|
||||||
|
|
||||||
if (killer) {
|
if (killer) {
|
||||||
autoquest_trigger_check(killer, NULL, NULL, AQ_MOB_SAVE);
|
autoquest_trigger_check(killer, NULL, NULL, AQ_MOB_SAVE);
|
||||||
autoquest_trigger_check(killer, NULL, NULL, AQ_ROOM_CLEAR);
|
autoquest_trigger_check(killer, NULL, NULL, AQ_ROOM_CLEAR);
|
||||||
}
|
}
|
||||||
return corpse;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct obj_data *die(struct char_data *ch, struct 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)) {
|
||||||
REMOVE_BIT_AR(PLR_FLAGS(ch), PLR_KILLER);
|
REMOVE_BIT_AR(PLR_FLAGS(ch), PLR_KILLER);
|
||||||
REMOVE_BIT_AR(PLR_FLAGS(ch), PLR_THIEF);
|
REMOVE_BIT_AR(PLR_FLAGS(ch), PLR_THIEF);
|
||||||
}
|
}
|
||||||
return raw_kill(ch, killer);
|
raw_kill(ch, killer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perform_group_gain(struct char_data *ch, int base,
|
static void perform_group_gain(struct char_data *ch, int base,
|
||||||
@@ -584,54 +581,16 @@ int skill_message(int dam, struct char_data *ch, struct char_data *vict,
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perform_autohandling(char_data *ch, const char_data *victim, int local_gold, const obj_data *corpse_obj) {
|
|
||||||
char local_buf[256];
|
|
||||||
obj_data *i;
|
|
||||||
int count = 0, found = FALSE;
|
|
||||||
|
|
||||||
if (IN_ROOM(ch) == NOWHERE || ch == victim) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// find the last corpse in the room
|
|
||||||
for (i = world[IN_ROOM(ch)].contents; i ; i = i->next_content) {
|
|
||||||
if (is_name("corpse", i->name) && CAN_SEE_OBJ(ch, i)) {
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
if (i == corpse_obj) {
|
|
||||||
found = TRUE;
|
|
||||||
break; // stop looking
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (count == 0 || !found) {
|
|
||||||
return; // no corpse here - it may have been removed by some other method.
|
|
||||||
}
|
|
||||||
if (GROUP(ch) && local_gold > 0 && PRF_FLAGGED(ch, PRF_AUTOSPLIT) ) {
|
|
||||||
sprintf(local_buf,"all.coin %d.corpse", count);
|
|
||||||
do_get(ch, local_buf, 0, 0);
|
|
||||||
sprintf(local_buf,"%d", local_gold);
|
|
||||||
do_split(ch, local_buf, 0, 0);
|
|
||||||
} else if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOGOLD)) {
|
|
||||||
sprintf(local_buf,"all.coin %d.corpse", count);
|
|
||||||
do_get(ch, local_buf, 0, 0);
|
|
||||||
}
|
|
||||||
if (!IS_NPC(ch) && (ch != victim) && PRF_FLAGGED(ch, PRF_AUTOLOOT)) {
|
|
||||||
sprintf(local_buf,"all %d.corpse", count);
|
|
||||||
do_get(ch, local_buf, 0, 0);
|
|
||||||
}
|
|
||||||
if (IS_NPC(victim) && !IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOSAC)) {
|
|
||||||
sprintf(local_buf,"%d.corpse", count);
|
|
||||||
do_sac(ch, local_buf,0,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This function returns the following codes:
|
/* This function returns the following codes:
|
||||||
* < 0 Victim died.
|
* < 0 Victim died.
|
||||||
* = 0 No damage.
|
* = 0 No damage.
|
||||||
* > 0 How much damage done. */
|
* > 0 How much damage done. */
|
||||||
int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype)
|
int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype)
|
||||||
{
|
{
|
||||||
int local_gold = 0, happy_gold = 0;
|
long local_gold = 0, happy_gold = 0;
|
||||||
obj_data *corpse_obj;
|
char local_buf[256];
|
||||||
|
struct char_data *tmp_char;
|
||||||
|
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 */
|
||||||
@@ -799,15 +758,31 @@ int damage(struct char_data *ch, struct char_data *victim, int dam, int attackty
|
|||||||
if (IS_NPC(victim)) {
|
if (IS_NPC(victim)) {
|
||||||
if ((IS_HAPPYHOUR) && (IS_HAPPYGOLD))
|
if ((IS_HAPPYHOUR) && (IS_HAPPYGOLD))
|
||||||
{
|
{
|
||||||
happy_gold = (int)(GET_GOLD(victim) * (((float)(HAPPY_GOLD))/(float)100));
|
happy_gold = (long)(GET_GOLD(victim) * (((float)(HAPPY_GOLD))/(float)100));
|
||||||
happy_gold = MAX(0, happy_gold);
|
happy_gold = MAX(0, happy_gold);
|
||||||
increase_gold(victim, happy_gold);
|
increase_gold(victim, happy_gold);
|
||||||
}
|
}
|
||||||
local_gold = GET_GOLD(victim);
|
local_gold = GET_GOLD(victim);
|
||||||
|
sprintf(local_buf,"%ld", (long)local_gold);
|
||||||
}
|
}
|
||||||
|
|
||||||
corpse_obj = die(victim, ch);
|
die(victim, ch);
|
||||||
perform_autohandling(ch, victim, local_gold, corpse_obj);
|
if (GROUP(ch) && (local_gold > 0) && PRF_FLAGGED(ch, PRF_AUTOSPLIT) ) {
|
||||||
|
generic_find("corpse", FIND_OBJ_ROOM, ch, &tmp_char, &corpse_obj);
|
||||||
|
if (corpse_obj) {
|
||||||
|
do_get(ch, "all.coin corpse", 0, 0);
|
||||||
|
do_split(ch, local_buf, 0, 0);
|
||||||
|
}
|
||||||
|
/* need to remove the gold from the corpse */
|
||||||
|
} else if (!IS_NPC(ch) && (ch != victim) && PRF_FLAGGED(ch, PRF_AUTOGOLD)) {
|
||||||
|
do_get(ch, "all.coin corpse", 0, 0);
|
||||||
|
}
|
||||||
|
if (!IS_NPC(ch) && (ch != victim) && PRF_FLAGGED(ch, PRF_AUTOLOOT)) {
|
||||||
|
do_get(ch, "all corpse", 0, 0);
|
||||||
|
}
|
||||||
|
if (IS_NPC(victim) && !IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOSAC)) {
|
||||||
|
do_sac(ch,"corpse",0,0);
|
||||||
|
}
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
return (dam);
|
return (dam);
|
||||||
|
|||||||
@@ -26,12 +26,10 @@ void check_killer(struct char_data *ch, struct char_data *vict);
|
|||||||
int compute_armor_class(struct char_data *ch);
|
int compute_armor_class(struct char_data *ch);
|
||||||
int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype);
|
int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype);
|
||||||
void death_cry(struct char_data *ch);
|
void death_cry(struct char_data *ch);
|
||||||
|
void die(struct char_data * ch, struct char_data * killer);
|
||||||
struct obj_data *die(struct char_data *ch, struct char_data *killer);
|
|
||||||
void hit(struct char_data *ch, struct 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(struct char_data * ch, struct char_data * killer);
|
||||||
struct obj_data *raw_kill(struct char_data *ch, struct char_data *killer);
|
|
||||||
void set_fighting(struct char_data *ch, struct char_data *victim);
|
void set_fighting(struct char_data *ch, struct char_data *victim);
|
||||||
int skill_message(int dam, struct char_data *ch, struct char_data *vict,
|
int skill_message(int dam, struct char_data *ch, struct char_data *vict,
|
||||||
int attacktype);
|
int attacktype);
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ void assign_objects(void)
|
|||||||
ASSIGNOBJ(3097, gen_board); /* freeze board */
|
ASSIGNOBJ(3097, gen_board); /* freeze board */
|
||||||
ASSIGNOBJ(3098, gen_board); /* immortal board */
|
ASSIGNOBJ(3098, gen_board); /* immortal board */
|
||||||
ASSIGNOBJ(3099, gen_board); /* mortal board */
|
ASSIGNOBJ(3099, gen_board); /* mortal board */
|
||||||
|
ASSIGNOBJ(4900, gen_board); /* mortal board */
|
||||||
|
|
||||||
ASSIGNOBJ(115, bank);
|
ASSIGNOBJ(115, bank);
|
||||||
ASSIGNOBJ(334, bank); /* atm */
|
ASSIGNOBJ(334, bank); /* atm */
|
||||||
|
|||||||
Reference in New Issue
Block a user