Fold role ability switches into single function
This commit is contained in:
+31
-87
@@ -101,6 +101,7 @@ static const struct innate {
|
|||||||
|
|
||||||
STATIC_DCL void NDECL(exerper);
|
STATIC_DCL void NDECL(exerper);
|
||||||
STATIC_DCL void FDECL(postadjabil, (long *));
|
STATIC_DCL void FDECL(postadjabil, (long *));
|
||||||
|
STATIC_DCL const struct innate *FDECL(role_abil, (int));
|
||||||
STATIC_DCL const struct innate *FDECL(check_innate_abil, (long *, long));
|
STATIC_DCL const struct innate *FDECL(check_innate_abil, (long *, long));
|
||||||
STATIC_DCL int FDECL(innately, (long *));
|
STATIC_DCL int FDECL(innately, (long *));
|
||||||
|
|
||||||
@@ -644,6 +645,34 @@ long *ability;
|
|||||||
see_monsters();
|
see_monsters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STATIC_OVL const struct innate *
|
||||||
|
role_abil(r)
|
||||||
|
int r;
|
||||||
|
{
|
||||||
|
const struct {
|
||||||
|
short role;
|
||||||
|
const struct innate *abil;
|
||||||
|
} roleabils[] = {
|
||||||
|
{ PM_ARCHEOLOGIST, arc_abil },
|
||||||
|
{ PM_BARBARIAN, bar_abil },
|
||||||
|
{ PM_CAVEMAN, cav_abil },
|
||||||
|
{ PM_HEALER, hea_abil },
|
||||||
|
{ PM_KNIGHT, kni_abil },
|
||||||
|
{ PM_MONK, mon_abil },
|
||||||
|
{ PM_PRIEST, pri_abil },
|
||||||
|
{ PM_RANGER, ran_abil },
|
||||||
|
{ PM_ROGUE, rog_abil },
|
||||||
|
{ PM_SAMURAI, sam_abil },
|
||||||
|
{ PM_TOURIST, tou_abil },
|
||||||
|
{ PM_VALKYRIE, val_abil },
|
||||||
|
{ PM_WIZARD, wiz_abil },
|
||||||
|
{ 0, 0 }
|
||||||
|
};
|
||||||
|
int i;
|
||||||
|
for (i = 0; roleabils[i].abil && roleabils[i].role != r; i++);
|
||||||
|
return roleabils[i].abil;
|
||||||
|
}
|
||||||
|
|
||||||
STATIC_OVL const struct innate *
|
STATIC_OVL const struct innate *
|
||||||
check_innate_abil(ability, frommask)
|
check_innate_abil(ability, frommask)
|
||||||
long *ability;
|
long *ability;
|
||||||
@@ -652,49 +681,7 @@ long frommask;
|
|||||||
const struct innate *abil = 0;
|
const struct innate *abil = 0;
|
||||||
|
|
||||||
if (frommask == FROMEXPER)
|
if (frommask == FROMEXPER)
|
||||||
switch (Role_switch) {
|
abil = role_abil(Role_switch);
|
||||||
case PM_ARCHEOLOGIST:
|
|
||||||
abil = arc_abil;
|
|
||||||
break;
|
|
||||||
case PM_BARBARIAN:
|
|
||||||
abil = bar_abil;
|
|
||||||
break;
|
|
||||||
case PM_CAVEMAN:
|
|
||||||
abil = cav_abil;
|
|
||||||
break;
|
|
||||||
case PM_HEALER:
|
|
||||||
abil = hea_abil;
|
|
||||||
break;
|
|
||||||
case PM_KNIGHT:
|
|
||||||
abil = kni_abil;
|
|
||||||
break;
|
|
||||||
case PM_MONK:
|
|
||||||
abil = mon_abil;
|
|
||||||
break;
|
|
||||||
case PM_PRIEST:
|
|
||||||
abil = pri_abil;
|
|
||||||
break;
|
|
||||||
case PM_RANGER:
|
|
||||||
abil = ran_abil;
|
|
||||||
break;
|
|
||||||
case PM_ROGUE:
|
|
||||||
abil = rog_abil;
|
|
||||||
break;
|
|
||||||
case PM_SAMURAI:
|
|
||||||
abil = sam_abil;
|
|
||||||
break;
|
|
||||||
case PM_TOURIST:
|
|
||||||
abil = tou_abil;
|
|
||||||
break;
|
|
||||||
case PM_VALKYRIE:
|
|
||||||
abil = val_abil;
|
|
||||||
break;
|
|
||||||
case PM_WIZARD:
|
|
||||||
abil = wiz_abil;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (frommask == FROMRACE)
|
else if (frommask == FROMRACE)
|
||||||
switch (Race_switch) {
|
switch (Race_switch) {
|
||||||
case PM_DWARF:
|
case PM_DWARF:
|
||||||
@@ -874,50 +861,7 @@ int oldlevel, newlevel;
|
|||||||
register const struct innate *abil, *rabil;
|
register const struct innate *abil, *rabil;
|
||||||
long prevabil, mask = FROMEXPER;
|
long prevabil, mask = FROMEXPER;
|
||||||
|
|
||||||
switch (Role_switch) {
|
abil = role_abil(Role_switch);
|
||||||
case PM_ARCHEOLOGIST:
|
|
||||||
abil = arc_abil;
|
|
||||||
break;
|
|
||||||
case PM_BARBARIAN:
|
|
||||||
abil = bar_abil;
|
|
||||||
break;
|
|
||||||
case PM_CAVEMAN:
|
|
||||||
abil = cav_abil;
|
|
||||||
break;
|
|
||||||
case PM_HEALER:
|
|
||||||
abil = hea_abil;
|
|
||||||
break;
|
|
||||||
case PM_KNIGHT:
|
|
||||||
abil = kni_abil;
|
|
||||||
break;
|
|
||||||
case PM_MONK:
|
|
||||||
abil = mon_abil;
|
|
||||||
break;
|
|
||||||
case PM_PRIEST:
|
|
||||||
abil = pri_abil;
|
|
||||||
break;
|
|
||||||
case PM_RANGER:
|
|
||||||
abil = ran_abil;
|
|
||||||
break;
|
|
||||||
case PM_ROGUE:
|
|
||||||
abil = rog_abil;
|
|
||||||
break;
|
|
||||||
case PM_SAMURAI:
|
|
||||||
abil = sam_abil;
|
|
||||||
break;
|
|
||||||
case PM_TOURIST:
|
|
||||||
abil = tou_abil;
|
|
||||||
break;
|
|
||||||
case PM_VALKYRIE:
|
|
||||||
abil = val_abil;
|
|
||||||
break;
|
|
||||||
case PM_WIZARD:
|
|
||||||
abil = wiz_abil;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
abil = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (Race_switch) {
|
switch (Race_switch) {
|
||||||
case PM_ELF:
|
case PM_ELF:
|
||||||
|
|||||||
Reference in New Issue
Block a user