void perform_net_load(struct descriptor_data *d, char *arg) { int skill_num, percent; long int cost; skip_spaces(&arg); if (!*arg) { d_printf(d, "Usage: load <program>\r\n"); return; } skill_num = find_skill_num(arg); if (skill_num < 1) { d_printf(d, "Error: program '%s' not found\r\n", arg); return; } if ((SPELL_GEN(skill_num, CLASS_CYBORG) > 0 && GET_CLASS(d->creature) != CLASS_CYBORG) || (GET_REMORT_GEN(d->creature) < SPELL_GEN(skill_num, CLASS_CYBORG)) || (GET_LEVEL(d->creature) < SPELL_LEVEL(skill_num, CLASS_CYBORG))) { d_printf(d, "Error: resources unavailable to load '%s'\r\n", arg); return; } if (GET_SKILL(d->creature, skill_num) >= LEARNED(d->creature)) { d_printf(d, "Program fully installed on local system.\r\n"); return; } cost = GET_SKILL_COST(d->creature, skill_num); d_printf(d, "Program cost: %10ld Account balance; %'" PRId64 "\r\n", cost, d->account->bank_future); if (d->account->bank_future < cost) { d_printf(d, "Error: insufficient funds in your account\r\n"); return; } withdraw_future_bank(d->account, cost); percent = MIN(MAXGAIN(d->creature), MAX(MINGAIN(d->creature), GET_INT(d->creature) * 2)); percent = MIN(LEARNED(d->creature) - GET_SKILL(d->creature, skill_num), percent); SET_SKILL(d->creature, skill_num, GET_SKILL(d->creature, skill_num) + percent); d_printf(d, "Program download: %s terminating, %d percent transfer.\r\n", spell_to_str(skill_num), percent); if (GET_SKILL(d->creature, skill_num) >= LEARNED(d->creature)) d_printf(d, "Program fully installed on local system.\r\n"); else d_printf(d, "Program %d%% installed on local system.\r\n", GET_SKILL(d->creature, skill_num)); }
void hunt_aggro(struct char_data * ch) { int dir; int skillnum = spells[find_skill_num("aggressive")].spellindex; struct char_data *hunted_ch; if (!ch || !HUNTING(ch) || FIGHTING(ch)) { return; } /* if (world[ch->in_room].zone != world[HUNTING(ch)->in_room].zone) { HUNTING(ch) = 0; return; } */ if ((hunted_ch = find_hunted_char(HUNTING(ch)))) { if (ch->in_room == hunted_ch->in_room && !ROOM_FLAGGED(hunted_ch->in_room, ROOM_PEACEFUL)) { if (CAN_SEE(hunted_ch, ch) && GET_SKILL(hunted_ch, skillnum) > number(0, 101)) { improve_skill(ch, skillnum, SKUSE_AVERAGE); hit(hunted_ch, ch, TYPE_UNDEFINED); } else { if (CAN_SEE(ch, hunted_ch)) { hit(ch, hunted_ch, TYPE_UNDEFINED); } } return; } } else { return; } /* dez 19980805 if (IS_NPC(ch) && MOB_FLAGGED(ch, MOB_SENTINEL)) { dir = find_first_step(ch->in_room, hunted_ch->in_room, 2); } else if (IS_NPC(ch) && MOB_FLAGGED(ch, MOB_STAY_ZONE)) { */ if (IS_NPC(ch) && MOB_FLAGGED(ch, MOB_STAY_ZONE)) { dir = find_first_step(ch->in_room, hunted_ch->in_room, 1); } else { dir = find_first_step(ch->in_room, hunted_ch->in_room, 0); } if (dir < 0) { /* do not forget until player is dead or I die HUNTING(ch) = 0; */ return; } else { perform_move(ch, dir, 1); if (ch->in_room == hunted_ch->in_room) { if (!ROOM_FLAGGED(ch->in_room, ROOM_PEACEFUL)) { if (CAN_SEE(hunted_ch, ch) && GET_SKILL(hunted_ch, skillnum) > number(0, 101)) { improve_skill(ch, skillnum, SKUSE_AVERAGE); hit(hunted_ch, ch, TYPE_UNDEFINED); } else { if (CAN_SEE(ch, hunted_ch)) { hit(ch, hunted_ch, TYPE_UNDEFINED); } } } } return; } }