pr("Amount must be non-zero!\n");
return RET_SYN;
}
- ontender = getvar(ip->i_vtype, (s_char *)&tender, EF_SHIP);
+ ontender = tender.shp_item[ip->i_vtype];
if (ontender == 0 && amt > 0) {
pr("No %s on %s\n", ip->i_name, prship(&tender));
return RET_FAIL;
if (tender.shp_x != target.shp_x ||
tender.shp_y != target.shp_y)
continue;
- ontarget = getvar(ip->i_vtype, (s_char *)&target, EF_SHIP);
+ ontarget = target.shp_item[ip->i_vtype];
if (ontarget == 0 && amt < 0) {
pr("No %s on %s\n", ip->i_name, prship(&target));
continue;
transfer = min(maxtender - ontender, transfer);
if (transfer == 0)
continue;
- putvar(ip->i_vtype, ontarget - transfer,
- (s_char *)&target, EF_SHIP);
+ target.shp_item[ip->i_vtype] = ontarget - transfer;
ontender += transfer;
total += transfer;
} else {
transfer = min(transfer, maxtarget - ontarget);
if (transfer == 0)
continue;
- putvar(ip->i_vtype, ontarget + transfer,
- (s_char *)&target, EF_SHIP);
+ target.shp_item[ip->i_vtype] = ontarget + transfer;
ontender -= transfer;
total += transfer;
}
pr("%d total %s transferred %s %s\n",
total, ip->i_name, (amt > 0) ? "off of" : "to",
prship(&tender));
- putvar(ip->i_vtype, ontender, (s_char *)&tender, EF_SHIP);
+ tender.shp_item[ip->i_vtype] = ontender;
tender.shp_mission = 0;
putship(tender.shp_uid, &tender);
}
static void
expose_ship(struct shpstr *s1, struct shpstr *s2)
{
- if (getvar(V_PSTAGE, (s_char *)s1, EF_SHIP) == PLG_INFECT &&
- getvar(V_PSTAGE, (s_char *)s2, EF_SHIP) == PLG_HEALTHY)
- putvar(V_PSTAGE, PLG_EXPOSED, (s_char *)s2, EF_SHIP);
- if (getvar(V_PSTAGE, (s_char *)s2, EF_SHIP) == PLG_INFECT &&
- getvar(V_PSTAGE, (s_char *)s1, EF_SHIP) == PLG_HEALTHY)
- putvar(V_PSTAGE, PLG_EXPOSED, (s_char *)s1, EF_SHIP);
+ if (s1->shp_pstage == PLG_INFECT && s2->shp_pstage == PLG_HEALTHY)
+ s2->shp_pstage = PLG_EXPOSED;
+ if (s2->shp_pstage == PLG_INFECT && s1->shp_pstage == PLG_HEALTHY)
+ s1->shp_pstage = PLG_EXPOSED;
}
/*