src/hcode/btech/p.mech.tech.damages.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void make_scrap_table (MECH *mech)
void make_damage_table (MECH *mech)
int is_under_repair (MECH *mech, int i)
char * damages_func (MECH *mech)
void show_mechs_damage (dbref player, void *data, char *buffer)
void tech_fix (dbref player, void *data, char *buffer)


Function Documentation

char* damages_func ( MECH mech  ) 

Definition at line 261 of file mech.tech.damages.c.

References damage_last, damage_table, ENHCRIT_AMMOB, ENHCRIT_AMMOM, ENHCRIT_BARREL, ENHCRIT_CRYSTAL, ENHCRIT_FOCUS, ENHCRIT_MISC, ENHCRIT_RANGING, FIXARMOR, FIXARMOR_R, FIXINTERNAL, FullAmmo(), GetPartData, is_under_repair(), make_damage_table(), make_scrap_table(), MBUF_SIZE, MechMove, MechType, pos_part_name(), RELOAD, REPAIRG, REPAIRP, REPAIRP_T, SCRAPG, SCRAPP, ShortArmorSectionString(), unit_is_fixable(), and UNLOAD.

Referenced by fun_btdamages().

00262 {
00263         static char buffer[MBUF_SIZE];
00264         int i;
00265 
00266         if(unit_is_fixable(mech))
00267                 make_damage_table(mech);
00268         else
00269                 make_scrap_table(mech);
00270 
00271         buffer[0] = '\0';
00272         if(!damage_last)
00273                 return "";
00274         for(i = 0; i < damage_last; i++) {
00275                 /* Ok... i think we want: */
00276                 /* repairnum|location|typenum|data|fixing? */
00277                 if(i)
00278                         sprintf(buffer, "%s,", buffer);
00279                 sprintf(buffer, "%s%d|%s|%d|", buffer, i + 1,
00280                                 ShortArmorSectionString(MechType(mech), MechMove(mech),
00281                                                                                 damage_table[i][1]),
00282                                 (int) damage_table[i][0]);
00283                 switch (damage_table[i][0]) {
00284                 case REPAIRP:
00285                 case REPAIRP_T:
00286                 case REPAIRG:
00287                 case ENHCRIT_MISC:
00288                 case ENHCRIT_FOCUS:
00289                 case ENHCRIT_CRYSTAL:
00290                 case ENHCRIT_BARREL:
00291                 case ENHCRIT_AMMOB:
00292                 case ENHCRIT_RANGING:
00293                 case ENHCRIT_AMMOM:
00294                 case SCRAPP:
00295                 case SCRAPG:
00296                         sprintf(buffer, "%s%s", buffer, pos_part_name(mech,
00297                                                                                                                   damage_table[i][1],
00298                                                                                                                   damage_table[i]
00299                                                                                                                   [2]));
00300                         break;
00301                 case RELOAD:
00302                         sprintf(buffer, "%s%s:%d", buffer, pos_part_name(mech,
00303                                                                                                                          damage_table[i]
00304                                                                                                                          [1],
00305                                                                                                                          damage_table[i]
00306                                                                                                                          [2]),
00307                                         FullAmmo(mech, damage_table[i][1],
00308                                                          damage_table[i][2]) - GetPartData(mech,
00309                                                                                                                            damage_table[i]
00310                                                                                                                            [1],
00311                                                                                                                            damage_table[i]
00312                                                                                                                            [2]));
00313                         break;
00314                 case UNLOAD:
00315                         sprintf(buffer, "%s%s:%d", buffer, pos_part_name(mech,
00316                                                                                                                          damage_table[i]
00317                                                                                                                          [1],
00318                                                                                                                          damage_table[i]
00319                                                                                                                          [2]),
00320                                         GetPartData(mech, damage_table[i][1], damage_table[i]
00321                                                                 [2]));
00322                         break;
00323                 case FIXARMOR:
00324                 case FIXARMOR_R:
00325                 case FIXINTERNAL:
00326                         sprintf(buffer, "%s%d", buffer, damage_table[i][2]);
00327                         break;
00328                 default:
00329                         sprintf(buffer, "%s-", buffer);
00330                 }
00331                 sprintf(buffer, "%s|%d", buffer, is_under_repair(mech, i));
00332         }
00333         return buffer;
00334 }

int is_under_repair ( MECH mech,
int  i 
)

Definition at line 222 of file mech.tech.damages.c.

References damage_table, DETACH, ENHCRIT_AMMOB, ENHCRIT_AMMOM, ENHCRIT_BARREL, ENHCRIT_CRYSTAL, ENHCRIT_FOCUS, ENHCRIT_MISC, ENHCRIT_RANGING, FIXARMOR, FIXARMOR_R, FIXINTERNAL, REATTACH, RELOAD, REPAIRG, REPAIRP, REPAIRP_T, REPLACESUIT, RESEAL, SCRAPG, SCRAPP, SomeoneAttaching(), SomeoneFixing(), SomeoneRepairing(), SomeoneReplacingSuit(), SomeoneResealing(), SomeoneScrappingLoc(), SomeoneScrappingPart(), and UNLOAD.

Referenced by damages_func(), and show_mechs_damage().

00223 {
00224         int v1 = damage_table[i][1];
00225         int v2 = damage_table[i][2];
00226 
00227         switch (damage_table[i][0]) {
00228         case RELOAD:
00229         case REPAIRP:
00230         case REPAIRP_T:
00231         case REPAIRG:
00232         case UNLOAD:
00233         case ENHCRIT_MISC:
00234         case ENHCRIT_FOCUS:
00235         case ENHCRIT_CRYSTAL:
00236         case ENHCRIT_BARREL:
00237         case ENHCRIT_AMMOB:
00238         case ENHCRIT_RANGING:
00239         case ENHCRIT_AMMOM:
00240                 return SomeoneRepairing(mech, v1, v2);
00241         case REATTACH:
00242                 return SomeoneAttaching(mech, v1);
00243         case RESEAL:
00244                 return SomeoneResealing(mech, v1);
00245         case FIXARMOR_R:
00246                 return SomeoneFixing(mech, v1 + 8);
00247         case FIXARMOR:
00248         case FIXINTERNAL:
00249                 return SomeoneFixing(mech, v1);
00250         case DETACH:
00251                 return SomeoneScrappingLoc(mech, v1);
00252         case SCRAPP:
00253         case SCRAPG:
00254                 return SomeoneScrappingPart(mech, v1, v2);
00255         case REPLACESUIT:
00256                 return SomeoneReplacingSuit(mech, v1);
00257         }
00258         return 0;
00259 }

void make_damage_table ( MECH mech  ) 

Definition at line 199 of file mech.tech.damages.c.

References CHECK, check_for_damage(), CLASS_MECH, CTORSO, damage_last, GetSectOInt, HEAD, LARM, LLEG, LTORSO, MechType, NUM_SECTIONS, RARM, RLEG, and RTORSO.

Referenced by damages_func(), fun_btnumrepjobs(), show_mechs_damage(), and tech_fix().

00200 {
00201         int i;
00202 
00203         damage_last = 0;
00204         if(MechType(mech) == CLASS_MECH) {
00205                 if(check_for_damage(mech, CTORSO)) {
00206                         if(check_for_damage(mech, LTORSO)) {
00207                                 CHECK(LARM);
00208                         }
00209                         if(check_for_damage(mech, RTORSO)) {
00210                                 CHECK(RARM);
00211                         }
00212                         CHECK(LLEG);
00213                         CHECK(RLEG);
00214                         CHECK(HEAD);
00215                 }
00216         } else
00217                 for(i = 0; i < NUM_SECTIONS; i++)
00218                         if(GetSectOInt(mech, i))
00219                                 check_for_damage(mech, i);
00220 }

void make_scrap_table ( MECH mech  ) 

Definition at line 176 of file mech.tech.damages.c.

References check_for_scrappage(), CLASS_MECH, CTORSO, damage_last, GetSectOInt, HEAD, LARM, LLEG, LTORSO, MechType, NUM_SECTIONS, RARM, RLEG, and RTORSO.

Referenced by damages_func(), fun_btnumrepjobs(), show_mechs_damage(), and tech_fix().

00177 {
00178         int i = 4;
00179 
00180         damage_last = 0;
00181         if(MechType(mech) == CLASS_MECH) {
00182                 if(check_for_scrappage(mech, RARM))
00183                         i -= check_for_scrappage(mech, RTORSO);
00184                 if(check_for_scrappage(mech, LARM))
00185                         i -= check_for_scrappage(mech, LTORSO);
00186                 i -= check_for_scrappage(mech, RLEG);
00187                 i -= check_for_scrappage(mech, LLEG);
00188 
00189                 if(!i)
00190                         check_for_scrappage(mech, CTORSO);
00191 
00192                 check_for_scrappage(mech, HEAD);
00193         } else
00194                 for(i = 0; i < NUM_SECTIONS; i++)
00195                         if(GetSectOInt(mech, i))
00196                                 check_for_scrappage(mech, i);
00197 }

void show_mechs_damage ( dbref  player,
void *  data,
char *  buffer 
)

Definition at line 336 of file mech.tech.damages.c.

References addline, c, cent, CLASS_MECH, damage_last, damage_table, DETACH, DOCHECK, ENHCRIT_AMMOB, ENHCRIT_AMMOM, ENHCRIT_BARREL, ENHCRIT_CRYSTAL, ENHCRIT_FOCUS, ENHCRIT_MISC, ENHCRIT_RANGING, FIXARMOR, FIXARMOR_R, FIXINTERNAL, FullAmmo(), GetMechID(), GetPartData, is_under_repair(), KillCoolMenu(), make_damage_table(), make_scrap_table(), MBUF_SIZE, MechMove, MechType, pos_part_name(), REATTACH, RELOAD, repair_need_msgs, REPAIRG, REPAIRP, REPAIRP_T, REPLACESUIT, RESEAL, SCRAPG, SCRAPP, ShortArmorSectionString(), ShowCoolMenu(), TECHCOMMANDD, tprintf(), unit_is_fixable(), UNLOAD, and vsi.

00337 {
00338         MECH *mech = data;
00339         coolmenu *c = NULL;
00340         int i, j, v1, v2;
00341         char buf[MBUF_SIZE];
00342         char buf2[MBUF_SIZE];
00343         int isds;
00344 
00345         TECHCOMMANDD;
00346         if(unit_is_fixable(mech))
00347                 make_damage_table(mech);
00348         else
00349                 make_scrap_table(mech);
00350         DOCHECK(!damage_last &&
00351                         MechType(mech) == CLASS_MECH,
00352                         "The 'mech is in pristine condition!");
00353         DOCHECK(!damage_last, "It's in pristine condition!");
00354         addline();
00355         cent(tprintf("Damage for %s", GetMechID(mech)));
00356         addline();
00357         for(i = 0; i < damage_last; i++) {
00358                 v1 = damage_table[i][1];
00359                 v2 = damage_table[i][2];
00360                 switch (damage_table[i][0]) {
00361                 case REATTACH:
00362                 case DETACH:
00363                 case RESEAL:
00364                 case REPLACESUIT:
00365                         strcpy(buf, repair_need_msgs[(int) damage_table[i][0]]);
00366                         break;
00367                 case REPAIRP:
00368                 case REPAIRP_T:
00369                 case REPAIRG:
00370                 case ENHCRIT_MISC:
00371                 case ENHCRIT_FOCUS:
00372                 case ENHCRIT_CRYSTAL:
00373                 case ENHCRIT_BARREL:
00374                 case ENHCRIT_AMMOB:
00375                 case ENHCRIT_RANGING:
00376                 case ENHCRIT_AMMOM:
00377                 case SCRAPP:
00378                 case SCRAPG:
00379                         sprintf(buf, repair_need_msgs[(int) damage_table[i][0]],
00380                                         pos_part_name(mech, v1, v2));
00381                         break;
00382                 case RELOAD:
00383                         sprintf(buf, repair_need_msgs[(int) damage_table[i][0]],
00384                                         pos_part_name(mech, v1, v2), FullAmmo(mech, v1,
00385                                                                                                                   v2) -
00386                                         GetPartData(mech, v1, v2));
00387                         break;
00388                 case UNLOAD:
00389                         sprintf(buf, repair_need_msgs[(int) damage_table[i][0]],
00390                                         pos_part_name(mech, v1, v2), GetPartData(mech, v1, v2));
00391                         break;
00392                 case FIXARMOR:
00393                 case FIXARMOR_R:
00394                 case FIXINTERNAL:
00395                         sprintf(buf, repair_need_msgs[(int) damage_table[i][0]],
00396                                         damage_table[i][2]);
00397                         break;
00398                 }
00399                 j = is_under_repair(mech, i);
00400                 sprintf(buf2, "%%ch%s%-2d:%s %%cn%s%s", j ? "%cg" : "%cy", i + 1,
00401                                 ShortArmorSectionString(MechType(mech), MechMove(mech), v1),
00402                                 buf, j ? " (*)" : "");
00403                 vsi(buf2);
00404         }
00405         addline();
00406         vsi("(*) / %ch%cgGreen%cn = Job already done. %ch%cyYellow%cn = To be done.");
00407         addline();
00408         ShowCoolMenu(player, c);
00409         KillCoolMenu(c);
00410 }

void tech_fix ( dbref  player,
void *  data,
char *  buffer 
)

Definition at line 491 of file mech.tech.damages.c.

References CLASS_MECH, damage_last, DOCHECK, fix_entry(), make_damage_table(), make_scrap_table(), MechType, skipws, TECHCOMMANDC, and unit_is_fixable().

00492 {
00493         MECH *mech = data;
00494         int n = atoi(buffer);
00495         int low, high;
00496         int isds;
00497 
00498         skipws(buffer);
00499         TECHCOMMANDC;
00500         if(unit_is_fixable(mech))
00501                 make_damage_table(mech);
00502         else
00503                 make_scrap_table(mech);
00504         DOCHECK(!damage_last &&
00505                         MechType(mech) == CLASS_MECH,
00506                         "The 'mech is in pristine condition!");
00507         DOCHECK(!damage_last, "It's in pristine condition!");
00508         if(sscanf(buffer, "%d-%d", &low, &high) == 2) {
00509                 DOCHECK(low < 1 || low > damage_last, "Invalid low #!");
00510                 DOCHECK(high < 1 || high > damage_last, "Invalid high #!");
00511                 for(n = low; n <= high; n++)
00512                         fix_entry(player, mech, n);
00513                 return;
00514         }
00515         DOCHECK(n < 1 || n > damage_last, "Invalid #!");
00516         fix_entry(player, mech, n);
00517 }


Generated on Mon May 28 04:25:42 2007 for BattletechMUX by  doxygen 1.4.7