]>
jfr.im git - irc/gameservirc.git/blob - gameserv/c_forest.cpp
c20cfb43fa2aa33372b1ae82cde147457e3cf5dd
9 void do_forest(char *u
);
10 Monster
*getNewMonster(Monster
*m
);
11 void deleteMonster(Monster
*m
);
13 void forest(char *source
, char *buf
)
15 char *cmd
= strtok(buf
, " ");
22 if (stricmp(cmd
, "SEARCH") == 0)
25 } else if (stricmp(cmd
, "ATTACK") == 0) {
27 } else if (stricmp(cmd
, "RUN") == 0) {
29 } else if (stricmp(cmd
, "HEAL") == 0) {
36 void do_forest(char *u
)
40 if (!(source
= find(u
)))
42 notice(s_GameServ
, u
, "Fatal Error in do_forest. Contact a %S admin for help.");
45 else if (!is_playing(source
))
47 notice(s_GameServ
, u
, "You must be playing the game to search the forest!");
50 Player
*p
= source
->stats
;
54 notice(s_GameServ
, u
, "You are dead. Wait until tomorrow to search the forest some more.");
59 updateTS(source
->stats
);
60 if (p
->getForestFights() <= 0)
62 notice(s_GameServ
, u
, "You are out of forest fights for the day. Wait "\
66 else if (!is_fighting(source
))
68 int eventnum
= rand() % 100;
69 p
->subtractForestFights(1);
71 notice(s_GameServ
, u
, "You search the forest for something to kill...");
73 // 90% of forest searching turns up a monster
76 p
->setMonster(levels
[p
->getLevel() - 1].randomMonster());
78 notice(s_GameServ
, u
, "You have found \ 2%s\ 2!", p
->getMonster()->name
.c_str());
79 if (p
->getMonster()->hp
< p
->getMonster()->maxhp
)
80 p
->getMonster()->hp
= p
->getMonster()->maxhp
;
82 p
->delBattle(); // Just to make sure
83 p
->delMaster(); // Just to make sure
86 else if (eventnum
< 10 && eventnum
>= 9) // 1% for finding potions
88 list
<tavernItem
>::iterator temp_tavernitem
;
90 notice(s_GameServ
, u
, "Fortune smiles upon thee!");
92 eventnum
= rand() % tavern
.size();
93 temp_tavernitem
= tavern
.begin();
94 for (int x
= 0;x
< eventnum
;x
++)
98 notice(s_GameServ
, u
, "You have found a %s", (*temp_tavernitem
).getItem()->getName().c_str());
99 p
->inventory
->addItem((*temp_tavernitem
).getItem());
101 else if (eventnum
< 9 && eventnum
>= 4) // 5% for the fountain
103 if (p
->getHP() < p
->getMaxHP())
105 notice(s_GameServ
, u
, "In your path lies a beautiful fountain from which flows the crystal waters of life.");
106 notice(s_GameServ
, u
, "You wet your lips on the cool blue waters and feel rejuvenated");
111 notice(s_GameServ
, u
, "In your path lies a beautiful fountain from which flows the crystal waters of life.");
112 notice(s_GameServ
, u
, "You are not thirsty, though, and you don't need healing. Best to leave this for the next warrior");
113 p
->addForestFights(1);
116 else if (eventnum
< 4) // 4 % for the wishing well
118 notice(s_GameServ
, u
, "You come upon a pure green emerald studded magic wishing well.");
119 if (p
->getGold() == 0)
121 notice(s_GameServ
, u
, "Too bad you're broke. Guess you won't be having any wishes answered today.");
122 p
->addForestFights(1);
126 notice(s_GameServ
, u
, "You throw one of your gold pieces into the well and it vanishes into a puff of white smoke.");
127 notice(s_GameServ
, u
, "In an instant, the puff of smoke materializes into a gnome.");
128 notice(s_GameServ
, u
, "The gnome is holding something in his hand motioning for you to come closer.");
129 notice(s_GameServ
, u
, "It is a wand! The gnome is waving it through the air towards you!");
130 // 2% for each wishing well chance except for forest fights
131 if (eventnum
< 1) // forest fights
133 newstats
= (rand() % 11) + 5;
134 notice(s_GameServ
, u
, "%ld EXTRA FOREST FIGHTS!!",
136 p
->addForestFights(newstats
);
138 else if (eventnum
< 3)
140 newstats
= levels
[p
->getLevel() - 1].getGold().random();
141 notice(s_GameServ
, u
, "A SACK WITH %ld GOLD!", newstats
);
142 p
->addGold(newstats
);
146 newstats
= levels
[p
->getLevel() - 1].getExp().random();
147 notice(s_GameServ
, u
, "Time seems to stand still for a moment.");
148 notice(s_GameServ
, u
, " %ld EXTRA EXPERIENCE POINTS", newstats
);
153 else if (is_fighting(u
))
155 notice(s_GameServ
, u
, "You want to fight two monsters at once?");
160 Monster
*getNewMonster(Monster
*m
)
166 newguy
= new Monster
;
167 newguy
->name
= m
->name
;
168 newguy
->weapon
= m
->weapon
;
169 newguy
->death
= m
->death
;
170 newguy
->strength
= m
->strength
;
171 newguy
->gold
= m
->gold
;
172 newguy
->exp
= m
->exp
;
174 newguy
->maxhp
= m
->maxhp
;