if (fmt[0] == '\0')
return;
+ char *commanduse;
+ commanduse = new char[16];
+
+ #ifdef P10
+ if (isUsePrivmsg())
+ strcpy(commanduse, "P");
+ else
+ strcpy(commanduse, "N");
+ #else
+
+ if (isUsePrivmsg())
+ strcpy(commanduse, "PRIVMSG");
+ else
+ strcpy(commanduse, "NOTICE");
+ #endif
+
va_list args;
char *input;
const char *t = fmt;
dest++;
#if !defined(P10)
- sprintf(input, ":%s NOTICE %s :", source, dest);
+ sprintf(input, ":%s %s %s :", source, commanduse, dest);
#else
- sprintf(input, "%s O %s :", gsnum, dest);
+ sprintf(input, "%s %s %s :", gsnum, commanduse, dest);
#endif
dest--;
else
{
#if !defined(P10)
- sprintf(input, ":%s NOTICE %s :", source, dest);
+ sprintf(input, ":%s %s %s :", source, commanduse, dest);
#else
- sprintf(input, "%s O %s :", gsnum, dest);
+ sprintf(input, "%s %s %s :", gsnum, commanduse, dest);
#endif
}
#endif
sprintf(input, "%s%s", input, "\r\n");
sock_puts(sock, input);
+ delete [] commanduse;
delete [] input;
va_end(args);
}
{
if (!is_playing(user))
{
+ ListNode<aClient> *temp;
user->stats = new Player(user);
user->stats->client = user; // Set the backwards pointer
- strcpy(user->stats->password, crypt(password, salt));
- strcpy(user->stats->name, name);
+ user->stats->reset(); // set the user up
+ strncpy(user->stats->password, crypt(password, salt), 255);
+ strncpy(user->stats->name, name, 255);
unsigned long hv = iHASH((unsigned char *) name);
updateTS(user->stats);
- players[hv].insertAtBack(user);
+ temp = players[hv].insertAtBack_RLN(user);
+ temp->setPtr(user); // This is an extra step, but necessary for now
+
notice(s_GameServ, u, "Player %s registered with password %s.", user->stats->name, password);
notice(s_GameServ, u, "Write this password down. If you lose it, there is no way to retrieve it!");
log("Nickname %s registered player %s.", u, user->stats->name);
strcpy(masters[4]->name, "Jackie Chan");
strcpy(masters[4]->weapon, "Kung Fu Kick");
- masters[4]->strength = 145;
+ masters[4]->strength = 156;
masters[4]->gold = 0;
masters[4]->exp = 0;
masters[4]->maxhp = 200;
strcpy(masters[5]->name, "Jet Li");
strcpy(masters[5]->weapon, "Motorcycle");
- masters[5]->strength = 170;
+ masters[5]->strength = 180;
masters[5]->gold = 0;
masters[5]->exp = 0;
masters[5]->maxhp = 400;
strcpy(masters[6]->name, "Muhammad Ali");
strcpy(masters[6]->weapon, "Quick Jab");
- masters[6]->strength = 195;
+ masters[6]->strength = 200;
masters[6]->gold = 0;
masters[6]->exp = 0;
masters[6]->maxhp = 600;
strcpy(masters[7]->name, "Li Mu Bai");
strcpy(masters[7]->weapon, "Green Destiny");
- masters[7]->strength = 220;
+ masters[7]->strength = 225;
masters[7]->gold = 0;
masters[7]->exp = 0;
masters[7]->maxhp = 800;
strcpy(masters[8]->name, "Jimmy Wang Yu");
strcpy(masters[8]->weapon, "Flying Guillotine");
- masters[8]->strength = 285;
+ masters[8]->strength = 290;
masters[8]->gold = 0;
masters[8]->exp = 0;
masters[8]->maxhp = 1200;
strcpy(masters[9]->name, "Wong Fei Hung");
strcpy(masters[9]->weapon, "Drunken Boxing");
- masters[9]->strength = 375;
+ masters[9]->strength = 385;
masters[9]->gold = 0;
masters[9]->exp = 0;
masters[9]->maxhp = 1800;
strcpy(masters[10]->name, "Bruce Lee");
strcpy(masters[10]->weapon, "Fists of fury");
- masters[10]->strength = 590;
+ masters[10]->strength = 600;
masters[10]->gold = 0;
masters[10]->exp = 0;
masters[10]->maxhp = 2500;
// You can't fight someone below you by more than X level(s)
// level 12 can fight level (12 - X) but not < (12 - X)
notice(s_GameServ, u, "You may not fight %s. You're too strong!",
- battle->stats->level);
+ battle->stats->name);
}
else if (battle->stats->level - ni->stats->level > maxafightdistance)
{
int oldstrength = user->stats->strength;
notice(s_GameServ, u, "As you grip the flask containing pure power, you feel adrenaline coarse through your veins!");
notice(s_GameServ, u, "In one swallow you drink the potion and feel your muscle fibers bulging andgrowing!");
- user->stats->strength += 3 + rand() % 8; // 3-10 Strength Added
+ user->stats->strength += 1 + (rand() % 10 >= 8 ? 1 : 0); // 1-2
notice(s_GameServ, u, "You gain %d Strength points!", user->stats->strength - oldstrength);
p->decStrength();
}
int olddefense = user->stats->defense;
notice(s_GameServ, u, "You drink the foul tasting viscous liquid while pinching your nose in disgust.");
notice(s_GameServ, u, "It tasted bad, but you feel like you are unbeatable!");
- user->stats->defense += 3 + rand() % 8; // 3 - 10 Defense Added
+ user->stats->defense += 1 + (rand() % 10 >= 8 ? 1 : 0); // 1-2
notice(s_GameServ, u, "You gain %d Defense points!", user->stats->defense - olddefense);
p->decDefense();
}
}
int oldHP = user->stats->maxhp;
notice(s_GameServ, u, "You feel your life growing longer as you drink the green glowing liquid.");
- user->stats->maxhp += 5 + rand() % 6; // 5-10 Maxhp
+ user->stats->maxhp += 2 +
+ (rand() % 100 > 70 ? (rand() % 7) : (rand() % 2) );
+
notice(s_GameServ, u, "You gain %d Maximum hit points!", user->stats->maxhp - oldHP);
p->decHP();
}
while(ptr)
{
it = ptr->getData()->stats;
+ clearYourTurn(it);
outfile << it->name << ' ' << it->level << ' ' << it->exp << ' ' << it->gold << ' ' << it->bank << ' '
<< it->hp << ' ' << it->maxhp << ' ' << it->strength << ' ' << it->defense << ' '
<< it->armor << ' ' << it->weapon << ' '
else if (stricmp(cmd, "LIST") == 0)
{
notice(s_GameServ, u, "Here is a list of what we have to offer:");
- notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 1000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 2050 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 2000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "4. HP Potions for %ld Gold", 2300 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 100 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 205 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 200 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "4. HP Potions for %ld Gold", 230 * p->level + (p->exp / 10));
notice(s_GameServ, u, "To buy a potion, type /msg %S TAVERN BUY #");
notice(s_GameServ, u, "Example: /msg %S TAVERN BUY 1 buys a healing potion!");
notice(s_GameServ, u, "By something will ya!");
{
notice(s_GameServ, u, "Invalid Choice!");
notice(s_GameServ, u, "Here is a list of what we have to offer:");
- notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 1000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 2050 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 2000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "4. HP Potions for %ld Gold", 2300 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 100 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 205 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 200 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "4. HP Potions for %ld Gold", 230 * p->level + (p->exp / 10));
notice(s_GameServ, u, "To buy a potion, type /msg %S TAVERN BUY #");
notice(s_GameServ, u, "Example: /msg %S TAVERN BUY 1 buys a healing potion!");
return;
switch(num)
{
case 1:
- price = (1000 * p->level) + (p->exp / 10);
+ price = (100 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One healing potion coming right up!");
notice(s_GameServ, u, "You don't have enough gold!");
break;
case 2:
- price = (2050 * p->level) + (p->exp / 10);
+ price = (205 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One strength boost coming right up!");
notice(s_GameServ, u, "You don't have enough gold!");
break;
case 3:
- price = (2000 * p->level) + (p->exp / 10);
+ price = (200 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One defense boost coming right up!");
notice(s_GameServ, u, "You don't have enough gold!");
break;
case 4:
- price = (2300 * p->level) + (p->exp / 10);
+ price = (230 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One HP Potion coming right up!");
notice(s_GameServ, u, "Refreshing everyone's stats!");
refreshall();
}
- else if ((user = findbyrealnick(nick)))
+ else if ((user = findplayer(nick)))
{
if (is_playing(user))
{
{
aClient *user = findplayer(p->name);
- if (!user) // then they're not playing
+ if (!user || !p->client) // then they're not playing
return;
char *nick = user->getNick();
}
else if (!player_fight(user))
{
+ if (isAlive(user) && user->stats->gold > 0)
+ {
// Place fun stuff here :)
int randnum = 1 + rand() % 100; // 1-100
+ #define GSN(s) notice(s_GameServ, nick, s)
+ #define GSN2(s, f) notice(s_GameServ, nick, s, f)
if (randnum < 50)
{
- #define GSN(s) notice(s_GameServ, nick, s)
- #define GSN2(s, f) notice(s_GameServ, nick, s, f)
- int stolen = ((35 + rand() % 66)/100) * user->stats->gold;
-
+ // 35-100% of your gold goes pffft - kain
+ int stolen = (35 + (rand() % 66)) * user->stats->gold / 100;
+
GSN("You stop for a moment to rest on the "\
"street corner. All of a sudden, you "\
"are ambushed from all sides by a hoarde "\
"and steal %d gold from you!", stolen);
user->stats->gold -= stolen;
}
-
+ else if (randnum >= 50 && randnum < 75)
+ {
+ // 25-65% of your gold goes pffft - kain
+ int stolen = (25 + (rand() % 41)) * user->stats->gold / 100;
+ GSN("While dilly dallying around, you lose "\
+ "your sense of time. Little did you know, "\
+ "but thieves lifted your gold while you "\
+ "weren't watching.");
+ GSN2("Better luck next time... you lose %d gold", stolen);
+ user->stats->gold -= stolen;
+ }
+ else if (randnum >= 75)
+ {
+ // 25-75% of your gold goes pffft - kain
+ int stolen = (25 + (rand() % 51)) * user->stats->gold / 100;
+ GSN("Good grief! A gaggle of gooey green ghostlike "\
+ "goblins grabbed your gold!");
+ GSN2("They stole %d gold from you!", stolen);
+ user->stats->gold -= stolen;
+ }
+ }
// Always log out the user
logout(user);