#include <sys/types.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "emlen.h" #ifndef WINDOWS #include <sys/times.h> #include <sys/types.h> #include <sys/resource.h> #endif long mytime(void) { #ifndef WINDOWS struct rusage resources; int who = RUSAGE_SELF; int ierr; long utime; long stime; ierr = getrusage (who, &resources); /* -------------------------------------- */ /* In case of error, return garbage value */ /* -------------------------------------- */ if (ierr != 0) { utime = -1.0; stime = -1.0; return (utime + stime); } /* ------------------------------------------------ */ /* Otherwise, unpack structure for return of values */ /* ------------------------------------------------ */ utime = (resources.ru_utime.tv_sec*1000000) + resources.ru_utime.tv_usec; stime = (resources.ru_stime.tv_sec*1000000) + resources.ru_stime.tv_usec; return (utime + stime); #else return 0; #endif } long info_mem(int i) { /* 1 = shared, 2 = unshared data, 3 = stack */ #ifndef WINDOWS struct rusage resources; int who = RUSAGE_SELF; int ierr; ierr = getrusage (who, &resources); fprintf(stderr,"%ld %ld %ld\n",resources.ru_ixrss,resources.ru_idrss, resources.ru_isrss); if (i==1) return resources.ru_ixrss; if (i==2) return resources.ru_idrss; if (i==3) return resources.ru_isrss; else #endif return 0; } #define GENERIC 0 #define ARMS 1 #define HEAD 2 #define BODY 3 #define LEGS 4 int tx,ty; CHAR_DATA *c; void NEW_POSITION(CHAR_DATA *ch,int nw) { ch->position=nw; return; } void SUBHIT(CHAR_DATA *ch,int i) { if (!ch || ch->data_type==50) { return; } ch->hit-=i; return; } void SUBMOVE(CHAR_DATA *ch,int i) { if (!ch || ch->data_type==50) { fprintf(stderr,"NULL character or free'd character in SUBMOVE.\n"); return; } ch->move-=i; return; } void ADDHIT(CHAR_DATA *ch,int i) { ch->hit+=i; return; } void ADDMOVE(CHAR_DATA *ch,int i) { if (!ch) return; ch->move+=i; return; } void MAXHIT(CHAR_DATA *ch) { ch->hit=ch->max_hit; return; } void MAXMOVE(CHAR_DATA *ch) { ch->move=ch->max_move; return; } void read_damages (void) { FILE *df; char buf[1000]; int lastmark= 0; bzero (&dmsg, sizeof (dmsg)); if ((df = fopen ("dam.dat", "r")) == NULL) { damt.kick_dam = str_dup ("o+2d/4m40+k/2"); write_damages (); } for (;;) { strcpy (buf, fread_word (df)); if (!str_cmp (buf, "END")) break; if (!str_cmp (buf, "Kickd")) damt.kick_dam = str_dup (fread_word (df)); if (!str_prefix ("#", buf)) { fread_to_eol (df); continue; } if (!str_cmp (buf, "GENERIC")) { dmsg.generic_range[lastmark][0] = fread_number (df); dmsg.generic_range[lastmark][1] = fread_number (df); dmsg.generic_percent[lastmark][0] = fread_number (df); dmsg.generic_percent[lastmark][1] = fread_number (df); fread_to_eol (df); dmsg.gen_m[lastmark] = fread_string_eol (df); dmsg.gen_m1[lastmark] = fread_string_eol (df); dmsg.gen_m2[lastmark]= fread_string_eol (df); lastmark++; } } fclose (df); return; } char * star_a (int dam, int maxhit) { static char rs[100]; int percent = (dam * 100) / maxhit; rs[0] = '\0'; if (percent < 1) strcpy (rs, "barely scratches"); else if (percent < 2) strcpy (rs, "lightly scratches"); else if (percent < 3) strcpy (rs, "scratches"); else if (percent < 5) strcpy (rs, "mildly wounds"); else if (percent < 8) strcpy (rs, "wounds"); else if (percent < 11) strcpy (rs, "badly wounds"); else if (percent < 15) strcpy (rs, "causes major injury to"); else if (percent < 20) strcpy (rs, "mangles"); else if (percent < 35) strcpy (rs, "devastates"); else if (percent < 70) strcpy (rs, "PULVERIZES"); else strcpy (rs, "OBLITERATES"); return rs; } char * star_b (int dam, int maxhit) { static char rst[100]; int percent = (dam * 100) / maxhit; rst[0] = '\0'; if (percent < 1) strcpy (rst, "barely scratching"); else if (percent < 2) strcpy (rst, "lightly scratching"); else if (percent < 3) strcpy (rst, "scratching"); else if (percent < 5) strcpy (rst, "mildly wounding"); else if (percent < 8) strcpy (rst, "wounding"); else if (percent < 11) strcpy (rst, "badly wounding"); else if (percent < 15) strcpy (rst, "causing major injury to"); else if (percent < 20) strcpy (rst, "mangling"); else if (percent < 35) strcpy (rst, "devastating"); else if (percent < 70) strcpy (rst, "PULVERIZING"); else strcpy (rst, "OBLITERATING"); return rst; } void display_dam_stuff (CHAR_DATA * ch) { char buff[500]; sprintf (buff, "Kick_dam....: %s --> %ld %ld %ld %ld\n", damt.kick_dam, translate (damt.kick_dam, LEVEL (ch), ch), translate (damt.kick_dam, LEVEL (ch), ch), translate (damt.kick_dam, LEVEL (ch), ch), translate (damt.kick_dam, LEVEL (ch), ch)); send_to_char (buff, ch); return; } void do_dam (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("damage", do_dam, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Checks kick damage.") display_dam_stuff (ch); return; }