/* ************************************************************************
* File: spec_assign.c Part of CircleMUD *
* Usage: Functions to assign function pointers to objs/mobs/rooms *
* *
* All rights reserved. See license.doc for complete information. *
* *
* Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
* CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. *
************************************************************************ */
#include <stdio.h>
#include "structs.h"
#include "awake.h"
#include "db.h"
#include "interpreter.h"
#include "utils.h"
void ASSIGNMOB(long mob, SPECIAL(fname));
/* arrays for trainers/teachers/adepts/masters */
/* order: vnum, attributes, 1 - newbie trainer (else 0) */
/* to have multiple attributes, separate them with | */
train_t trainers[] = {
{ 2506, TSTR, 0 },
{ 4255, TBOD, 0 },
{ 60500, TBOD | TQUI | TSTR | TCHA | TINT | TWIL, 1 },
{ 17104, TBOD | TQUI | TSTR, 0 },
{ 9413, TCHA | TINT | TWIL, 0 },
{ 0, 0, 0 } /* this MUST be last */
};
/* order: vnum, skill1, skill2, skill3, skill4, skill5, learn message, level */
/* if they teach < 5 skills, put a 0 in the remaining skill slots */
/* available levels are NEWBIE (4), AMATEUR (6/7), and ADVANCED (10/11) */
teach_t metamagict[] = {
{ 24806, { META_REFLECTING, META_CLEANSING, 0, 0, 0, 0, 0, 0 }, "", 0 },
{ 4250, { META_ANCHORING, META_QUICKENING, 0, 0, 0, 0, 0, 0 }, "", 0 },
{ 4251, { META_ANCHORING, META_POSSESSING, 0, 0, 0, 0, 0, 0 }, "", 0 },
{ 35538, { META_MASKING, META_CLEANSING, META_CENTERING, 0, 0, 0, 0, 0 }, "", 0},
{ 27426, { META_SHIELDING, META_POSSESSING, META_INVOKING, META_MASKING, 0, 0, 0, 0 }, "", 0},
{ 0, { 0, 0, 0, 0, 0, 0, 0, 0 }, "", 0}
};
teach_t teachers[] = {
{ 2508, { SKILL_BIOTECH, 0, 0, 0, 0, 0, 0, 0 }, "After hours of medical research and instruction, you begin "
"to\r\nunderstand more of the basic biotech procedures.\r\n", NEWBIE },
{ 2701, { SKILL_ATHLETICS, SKILL_STEALTH, SKILL_UNARMED_COMBAT, SKILL_EDGED_WEAPONS,
SKILL_WHIPS_FLAILS, SKILL_PROJECTILES, SKILL_THROWING_WEAPONS, 0 },
"Toh Li gives you the workout of your life, but you come out more learned.", AMATEUR },
{ 3722, { SKILL_ATHLETICS, SKILL_RIFLES, SKILL_PISTOLS, 0, 0, 0, 0, 0 },
"After hours of study and physical practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 4101, { SKILL_SHOTGUNS, SKILL_PISTOLS, SKILL_RIFLES, SKILL_SMG, SKILL_ASSAULT_RIFLES, 0, 0, 0 },
"After hours of study and target practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 4102, { SKILL_CLUBS, SKILL_EDGED_WEAPONS, SKILL_POLE_ARMS, SKILL_WHIPS_FLAILS,
SKILL_PILOT_CAR, 0, 0, 0 }, "After hours of study and practice, you feel like you've "
"learned\r\nsomething.\r\n", AMATEUR },
{ 4103, { SKILL_SHOTGUNS, SKILL_PISTOLS, SKILL_RIFLES, SKILL_SMG, SKILL_ASSAULT_RIFLES,
SKILL_MACHINE_GUNS, SKILL_MISSILE_LAUNCHERS, SKILL_ASSAULT_CANNON },
"After hours of study and target practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 4104, { SKILL_CLUBS, SKILL_EDGED_WEAPONS, SKILL_POLE_ARMS, SKILL_WHIPS_FLAILS, 0, 0, 0,
0 }, "After hours of study and melee practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 4250, { SKILL_SORCERY, SKILL_CONJURING, SKILL_AURA_READING, 0, 0, 0, 0, 0 },
"After hours of study and magical practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 4251, { SKILL_CONJURING, SKILL_SORCERY, SKILL_AURA_READING, 0, 0, 0, 0, 0 },
"After hours of study and magical practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 4257, { SKILL_ASSAULT_RIFLES, SKILL_TASERS, 0, 0, 0, 0, 0, 0 },
"After hours of study and weapon practice, you feel like you've learned\r\nsomething.\r\n", AMATEUR },
{ 60501, { SKILL_SORCERY, SKILL_CONJURING, SKILL_AURA_READING, SKILL_SPELLDESIGN, SKILL_ENCHANTING, SKILL_CENTERING, SKILL_TALISMONGERING, 0 },
"After hours of study and practice, you feel like you've learned\r\nsomething.\r\n", NEWBIE },
{ 60502, { SKILL_COMPUTER, SKILL_BR_COMPUTER, SKILL_ELECTRONICS, SKILL_BR_ELECTRONICS, SKILL_CYBERTERM_DESIGN,
SKILL_DATA_BROKERAGE, 0, 0 }, "After hours of study and practice, you feel like you've learned\r\nsomething.\r\n", NEWBIE },
{ 60503, { SKILL_ENGLISH, SKILL_JAPANESE, SKILL_CHINESE, SKILL_KOREAN,
SKILL_SPERETHIEL, SKILL_SPANISH, SKILL_ITALIAN, SKILL_RUSSIAN },
"Von Richter runs through basic conjugation and sentance structure with you.\r\n", NEWBIE },
{ 60504, { SKILL_PILOT_CAR, SKILL_PILOT_BIKE, SKILL_PILOT_TRUCK, SKILL_BR_BIKE,
SKILL_BR_DRONE, SKILL_BR_CAR, SKILL_BR_TRUCK, 0 }, "After hours of study and practice, "
"you feel like you've learned\r\nsomething.\r\n", NEWBIE },
{ 60505, { SKILL_EDGED_WEAPONS, SKILL_WHIPS_FLAILS, SKILL_POLE_ARMS, SKILL_CLUBS,
SKILL_PROJECTILES, SKILL_THROWING_WEAPONS, SKILL_UNARMED_COMBAT, SKILL_CYBER_IMPLANTS },
"After hours of study and practice, you feel like you've learned\r\nsomething.\r\n", NEWBIE },
{ 60506, { SKILL_PISTOLS, SKILL_RIFLES, SKILL_SHOTGUNS, SKILL_SMG, SKILL_ASSAULT_RIFLES,
SKILL_GUNNERY, SKILL_MACHINE_GUNS, SKILL_PROJECTILES }, "After hours of study and practice, "
"you feel like you've learned\r\nsomething.\r\n", NEWBIE },
{ 60532, { SKILL_PROGRAM_COMBAT, SKILL_PROGRAM_DEFENSIVE, SKILL_PROGRAM_OPERATIONAL, SKILL_PROGRAM_SPECIAL,
SKILL_PROGRAM_CYBERTERM, 0, 0, 0 }, "Deadlock picks up some design plans from his desk and runs through"
"the basic process of setting one up, you feel like you've learned\r\nsomething.\r\n", NEWBIE},
{ 60533, { SKILL_NEGOTIATION, SKILL_CORPORATE_ETIQUETTE, SKILL_MEDIA_ETIQUETTE, SKILL_STREET_ETIQUETTE,
SKILL_ELF_ETIQUETTE, SKILL_TRIBAL_ETIQUETTE, 0, 0 }, "Lucy runs through the proper decorum to use in certain"
" situations, you feel like you've learned\r\nsomething.\r\n", NEWBIE},
{ 60534, { SKILL_ATHLETICS, SKILL_STEALTH, SKILL_BIOTECH, SKILL_ORALSTRIKE, SKILL_POLICE_PROCEDURES, 0, 0, 0 },
"Steve roughly throws you a text book and tells you to read it, you feel like you've learned\r\nsomething.\r\n", NEWBIE},
{ 30700, { SKILL_ENGLISH, SKILL_JAPANESE, SKILL_CHINESE, SKILL_KOREAN,
SKILL_SPERETHIEL, SKILL_SALISH, SKILL_ITALIAN, SKILL_NEGOTIATION }, "Socrates shows you the intricities "
"of the language and you emerge with a greater understanding.\r\n", AMATEUR },
{ 13499, { SKILL_COMPUTER, SKILL_ELECTRONICS, SKILL_BR_COMPUTER, SKILL_BR_ELECTRONICS, SKILL_PROGRAM_COMBAT, SKILL_PROGRAM_DEFENSIVE, SKILL_PROGRAM_CYBERTERM, SKILL_CYBERTERM_DESIGN }, "Brian explains some concepts you had yet to understand "
"and\r\nyou feel like you've learned something.\r\n", AMATEUR },
{ 14608, { SKILL_PILOT_CAR, SKILL_GRENADE_LAUNCHERS, SKILL_MACHINE_GUNS,
SKILL_MISSILE_LAUNCHERS, SKILL_ASSAULT_CANNON, SKILL_PILOT_BIKE, SKILL_PILOT_TRUCK, SKILL_GUNNERY },
"Hal shows you a trick or two, and the rest just falls into place.\r\n", AMATEUR },
{ 14638, { SKILL_COMPUTER, SKILL_ELECTRONICS, SKILL_BR_COMPUTER, SKILL_BIOTECH, SKILL_BR_DRONE, SKILL_PROGRAM_SPECIAL, SKILL_PROGRAM_OPERATIONAL, SKILL_DATA_BROKERAGE }, "Gargamel looks at you, hands you some parts, drops you a clue, and you get it.\r\n", AMATEUR},
{ 7223, { SKILL_UNARMED_COMBAT, SKILL_THROWING_WEAPONS, SKILL_STEALTH, SKILL_ATHLETICS,
SKILL_PROJECTILES, SKILL_CYBER_IMPLANTS, 0, 0 }, "Shing gives you a work out like none you've ever had, "
"but\r\nyou feel like you've learned something.\r\n", AMATEUR },
{ 24806, { SKILL_SORCERY, SKILL_CONJURING, SKILL_CENTERING, SKILL_ENCHANTING, SKILL_NEGOTIATION,
SKILL_AURA_READING, SKILL_SPELLDESIGN, SKILL_TALISMONGERING }, "Hermes imparts his wisdom upon you.\r\n", AMATEUR },
{ 37500, { SKILL_BR_CAR, SKILL_BR_BIKE, SKILL_BR_DRONE, SKILL_BR_TRUCK, 0, 0, 0, 0 }, "Marty shows you a few tricks of the "
"trade and you emerge more skilled than before.\r\n", AMATEUR },
{ 35502, { SKILL_STREET_ETIQUETTE, 0, 0, 0, 0, 0, 0, 0 }, "You spend some time talking to the people in"
" line.\r\n", AMATEUR },
{ 17111, { SKILL_CORPORATE_ETIQUETTE, SKILL_NEGOTIATION, 0, 0, 0, 0, 0, 0 }, "You spend some time making small talk with"
" the secretary.\r\n", AMATEUR },
{ 65106, { SKILL_MEDIA_ETIQUETTE, SKILL_STEALTH, 0, 0, 0, 0, 0, 0 }, "You talk to the reporter about current events for"
" a while.\r\n", AMATEUR },
{ 18311, { SKILL_STREET_ETIQUETTE, SKILL_MEDIA_ETIQUETTE, SKILL_ELF_ETIQUETTE, SKILL_CORPORATE_ETIQUETTE,
SKILL_TRIBAL_ETIQUETTE, SKILL_NEGOTIATION, SKILL_POLICE_PROCEDURES, 0 }, "You read through "
"various lifestyle books for a while.\r\n", LIBRARY },
{ 18312, { SKILL_COMPUTER, SKILL_ELECTRONICS, SKILL_BR_COMPUTER, SKILL_CYBERTERM_DESIGN,
SKILL_BR_ELECTRONICS, SKILL_DATA_BROKERAGE, SKILL_PROGRAM_CYBERTERM, SKILL_PROGRAM_SPECIAL },
"You read through various technological journals.\r\n", LIBRARY },
{ 18313, { SKILL_ENGLISH, SKILL_SPERETHIEL, SKILL_SPANISH, SKILL_JAPANESE, SKILL_CHINESE,
SKILL_KOREAN, SKILL_ITALIAN, SKILL_RUSSIAN }, "You raid the teach yourself languages section.\r\n", LIBRARY },
{ 0, { 0, 0, 0, 0, 0, 0, 0, 0 }, "Report this bug!\r\n", 0 } // this MUST be last
};
adept_t adepts[] = {
{ 60507,{ 0, 1, 3, 1, 1, 4, 1, 1, 1, 3, 6, 6, 6, 6, 6, 6, 3, 1, 1, 1, 3, 10, 3, 3, 3, 1, 1, 6, 6, 6, 6, 6, 1, 3, 1, 1, 1, 1, 3, 6, 1}, 1 },
{ 7223, { 0, 1, 3, 0, 1, 4, 1, 0, 0, 3, 0, 6, 0, 0, 6, 0, 6, 0, 0, 0, 0, 10, 0, 0, 6, 1, 1, 2, 0, 6, 0,0, 0, 0, 0, 0, 1, 0, 3, 4, 1}, 0 },
{ 2701, { 0, 1, 3, 0, 0, 4, 0, 1, 1, 0, 6, 0, 6, 6, 0, 6, 0, 1, 1, 1, 4, 0, 3, 3, 0, 0, 0, 4, 2, 0, 0,0, 1, 0, 0, 1, 0, 1, 2, 0, 1}, 0 },
{ 3603, { 0, 0, 3, 1, 1, 4, 1, 1, 1, 3, 6, 0, 0, 0, 0, 6, 0, 1, 1, 1, 4, 10, 6, 0, 0, 0, 0, 4, 0, 0, 6,6, 1, 3, 0, 1, 0, 1, 0, 0, 0}, 0 },
{ 20326,{ 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 4, 5, 2, 2, 2, 0, 1, 2, 1, 2, 6,3, 0, 2, 1, 0, 1, 0, 3, 0, 1}, 0 },
{ 0, { 0, 0, 0, 0 }, 0 } // this MUST be last
};
spell_t spelltrainers[] = {
{ 60508, SPELL_MANABOLT, "Manabolt", 0, 6 },
{ 60508, SPELL_POWERBOLT, "Powerbolt", 0, 6 },
{ 60508, SPELL_STUNBOLT, "Stunbolt", 0, 6 },
{ 60508, SPELL_COMBATSENSE, "Combat Sense", 0, 6},
{ 60508, SPELL_DETECTLIFE, "Detect Life", 0, 6},
{ 60508, SPELL_HEAL, "Heal", 0, 6},
{ 60508, SPELL_TREAT, "Treat", 0, 6},
{ 60508, SPELL_INCATTR, "Increase Strength", STR, 6},
{ 60508, SPELL_INCCYATTR, "Increase Cybered Strength", STR, 6},
{ 60508, SPELL_INCREF1, "Increased Reflexes", 0, 6},
{ 60508, SPELL_LIGHTNINGBOLT, "Lightning Bolt", 0, 6},
{ 60508, SPELL_ARMOUR, "Armour", 0, 6},
{ 60508, SPELL_INVIS, "Invisibility", 0, 6},
{ 60509, SPELL_MANABOLT, "Manabolt", 0, 6 },
{ 60509, SPELL_POWERBOLT, "Powerbolt", 0, 6 },
{ 60509, SPELL_STUNBOLT, "Stunbolt", 0, 6 },
{ 60509, SPELL_COMBATSENSE, "Combat Sense", 0, 6},
{ 60509, SPELL_DETECTLIFE, "Detect Life", 0, 6},
{ 60509, SPELL_HEAL, "Heal", 0, 6},
{ 60509, SPELL_TREAT, "Treat", 0, 6},
{ 60509, SPELL_INCATTR, "Increase Strength", ATT_STR, 6},
{ 60509, SPELL_INCCYATTR, "Increase Cybered Strength", ATT_STR, 6},
{ 60509, SPELL_INCREF1, "Increased Reflexes", 0, 6},
{ 60509, SPELL_LIGHTNINGBOLT, "Lightning Bolt", 0, 6},
{ 60509, SPELL_ARMOUR, "Armour", 0, 6},
{ 60509, SPELL_INVIS, "Invisibility", 0, 6},
{60600, SPELL_DEATHTOUCH, "Death Touch", 0, 6},
{60600, SPELL_MANABOLT, "Manabolt", 0, 6},
{60600, SPELL_MANABALL, "Manaball", 0, 6},
{60600, SPELL_POWERBOLT, "Powerbolt", 0, 6},
{60600, SPELL_POWERBALL, "Powerball", 0, 6},
{60600, SPELL_STUNBOLT, "Stunbolt", 0, 6},
{60600, SPELL_STUNBALL, "Stunball", 0, 6},
{60601, SPELL_DECATTR, "Decrease Body", BOD, 6},
{60601, SPELL_DECATTR, "Decrease Strength", STR, 6},
{60601, SPELL_DECATTR, "Decrease Quickness", QUI, 6},
{60601, SPELL_DECCYATTR, "Decrease (Cybered) Body", BOD, 6},
{60601, SPELL_DECCYATTR, "Decrease (Cybered) Strength", STR, 6},
{60601, SPELL_DECCYATTR, "Decrease (Cybered) Quickness", QUI, 6},
{60601, SPELL_DETOX, "Detox", 0, 6},
{60601, SPELL_HEAL, "Heal", 0, 6},
{60601, SPELL_TREAT, "Treat", 0, 6},
{60601, SPELL_HEALTHYGLOW, "Healthy Glow", 0, 6},
{60601, SPELL_INCATTR, "Increase Body", BOD, 6},
{60601, SPELL_INCATTR, "Increase Strength", STR, 6},
{60601, SPELL_INCATTR, "Increase Quickness", QUI, 6},
{60601, SPELL_INCCYATTR, "Increase (Cybered) Body", BOD, 6},
{60601, SPELL_INCCYATTR, "Increase (Cybered) Strength", STR, 6},
{60601, SPELL_INCCYATTR, "Increase (Cybered) Quickness", QUI, 6},
{60601, SPELL_INCREA, "Increase Reaction", 0, 6},
{60601, SPELL_INCREF1, "Increase Reflexes +1", 0, 6},
{60601, SPELL_INCREF2, "Increase Reflexes +2", 0, 6},
{60601, SPELL_INCREF3, "Increase Reflexes +3", 0, 6},
{60601, SPELL_PROPHYLAXIS, "Prophylaxis", 0, 6},
{60601, SPELL_STABILIZE, "Stabilize", 0, 6},
{60602, SPELL_ANALYZEDEVICE, "Analyze Device", 0, 6},
{60602, SPELL_CLAIRAUDIENCE, "Clairaudience", 0, 6},
{60602, SPELL_CLAIRVOYANCE, "Clairvoyance", 0, 6},
{60602, SPELL_COMBATSENSE, "Combat Sense", 0, 6},
{60602, SPELL_DETECTENEMIES, "Detect Enemies", 0, 6},
{60602, SPELL_DETECTINDIV, "Detect Individual", 0, 6},
{60602, SPELL_DETECTLIFE, "Detect Life", 0, 6},
{60602, SPELL_DETECTMAGIC, "Detect Magic", 0, 6},
{60602, SPELL_DETECTOBJECT, "Detect Object", 0, 6},
{60602, SPELL_MINDLINK, "Mindlink", 0, 6},
{60603, SPELL_CONFUSION, "Confusion", 0, 6},
{60603, SPELL_MASSCONFUSION, "Mass Confusion", 0, 6},
{60603, SPELL_CHAOS, "Chaos", 0, 6},
{60603, SPELL_CHAOTICWORLD, "Chaotic World", 0, 6},
{60603, SPELL_INVIS, "Invisibility", 0, 6},
{60603, SPELL_IMP_INVIS, "Improved Invisibility", 0, 6},
{60603, SPELL_MASK, "Mask", 0, 6},
{60603, SPELL_PHYSMASK, "Physical Mask", 0, 6},
{60603, SPELL_SILENCE, "Silence", 0, 6},
{60603, SPELL_STEALTH, "Stealth", 0, 6},
{60604, SPELL_LIGHT, "Light", 0, 6},
{60604, SPELL_ACIDSTREAM, "Acid Stream", 0, 6},
{60604, SPELL_TOXICWAVE, "Toxic Wave", 0, 6},
{60604, SPELL_FLAMETHROWER, "Flamethrower", 0, 6},
{60604, SPELL_FIREBALL, "Fireball", 0, 6},
{60604, SPELL_LIGHTNINGBOLT, "Lightning Bolt", 0, 6},
{60604, SPELL_BALLLIGHTNING, "Ball Lightning", 0, 6},
{60604, SPELL_CLOUT, "Clout", 0, 6},
{60604, SPELL_POLTERGEIST, "Poltergeist", 0, 6},
{60604, SPELL_ARMOUR, "Armour", 0, 6},
{60604, SPELL_PHYSICALBARRIER, "Physical Barrier", 0, 6},
{60604, SPELL_ASTRALBARRIER, "Astral Barrier", 0, 6},
{60604, SPELL_ICESHEET, "Icesheet", 0, 6},
{60604, SPELL_IGNITE, "Ignite", 0, 6},
{60604, SPELL_SHADOW, "Shadow", 0, 6},
{ 0, 0, "", 0, 0},
};
/* functions to perform assignments */
void ASSIGNMOB(long mob, SPECIAL(fname))
{
long rnum;
if ((rnum = real_mobile(mob)) >= 0) {
mob_index[rnum].sfunc = mob_index[rnum].func;
mob_index[rnum].func = fname;
} else
log("SYSERR: Attempt to assign spec to non-existant mob #%d", mob);
}
void ASSIGNOBJ(long obj, SPECIAL(fname))
{
if (real_object(obj) >= 0)
obj_index[real_object(obj)].func = fname;
else
log("SYSERR: Attempt to assign spec to non-existant obj #%d", obj);
}
void ASSIGNWEAPON(long weapon, WSPEC(fname))
{
if (real_object(weapon) >= 0)
obj_index[real_object(weapon)].wfunc = fname;
else
log("SYSERR: Attempt to assign spec to non-existant weapon #%d", weapon);
}
void ASSIGNROOM(long room, SPECIAL(fname))
{
if (real_room(room) >= 0)
world[real_room(room)].func = fname;
else
log("SYSERR: Attempt to assign spec to non-existant rm. #%d", room);
}
/* ********************************************************************
* Assignments *
******************************************************************** */
/* assign special procedures to mobiles */
void assign_mobiles(void)
{
int i;
SPECIAL(postmaster);
SPECIAL(generic_guard);
SPECIAL(receptionist);
SPECIAL(cryogenicist);
SPECIAL(teacher);
SPECIAL(metamagic_teacher);
SPECIAL(trainer);
SPECIAL(adept_trainer);
SPECIAL(spell_trainer);
SPECIAL(puff);
SPECIAL(janitor);
SPECIAL(snake);
SPECIAL(thief);
SPECIAL(pike);
SPECIAL(jeff);
SPECIAL(captain);
SPECIAL(rodgers);
SPECIAL(delaney);
SPECIAL(lone_star_park);
SPECIAL(mugger_park);
SPECIAL(gate_guard_park);
SPECIAL(squirrel_park);
SPECIAL(sick_ork);
SPECIAL(mage_messenger);
SPECIAL(malinalxochi);
SPECIAL(adept_guard);
SPECIAL(takehero_tsuyama);
SPECIAL(bio_secretary);
SPECIAL(pool);
SPECIAL(harlten);
SPECIAL(branson);
SPECIAL(bio_guard);
SPECIAL(worker);
SPECIAL(dwarf);
SPECIAL(elf);
SPECIAL(george);
SPECIAL(wendigo);
SPECIAL(pimp);
SPECIAL(prostitute);
SPECIAL(heinrich);
SPECIAL(ignaz);
SPECIAL(waitress);
SPECIAL(dracula);
SPECIAL(tunnel_rat);
SPECIAL(saeder_guard);
SPECIAL(fixer);
SPECIAL(hacker);
SPECIAL(fence);
SPECIAL(taxi);
SPECIAL(crime_mall_guard);
SPECIAL(doctor_scriptshaw);
SPECIAL(huge_troll);
SPECIAL(roots_receptionist);
SPECIAL(aegnor);
SPECIAL(purple_haze_bartender);
SPECIAL(yukiya_dahoto);
SPECIAL(terell_davis);
SPECIAL(smiths_bouncer);
SPECIAL(matchsticks);
SPECIAL(painter);
/* trainers */
for (i = 0; trainers[i].vnum != 0; i++)
ASSIGNMOB(trainers[i].vnum, trainer);
/* teachers */
for (i = 0; teachers[i].vnum != 0; i++)
ASSIGNMOB(teachers[i].vnum, teacher);
/* metamagic trainers */
for (i = 0; metamagict[i].vnum != 0; i++)
ASSIGNMOB(metamagict[i].vnum, metamagic_teacher);
/* adept trainer */
for (i = 0; adepts[i].vnum != 0; i++)
ASSIGNMOB(adepts[i].vnum, adept_trainer);
for (i = 0; spelltrainers[i].teacher; i++)
if (mob_index[real_mobile(spelltrainers[i].teacher)].func != spell_trainer)
ASSIGNMOB(spelltrainers[i].teacher, spell_trainer);
/* cab drivers */
ASSIGNMOB(600, taxi);
ASSIGNMOB(650, taxi);
/* Immortal HQ */
ASSIGNMOB(1002, janitor);
ASSIGNMOB(1005, postmaster);
ASSIGNMOB(1151, terell_davis);
/* SWU */
ASSIGNMOB(60526, postmaster);
/* Various Tacoma */
ASSIGNMOB(1823, aegnor);
ASSIGNMOB(1832, fixer);
ASSIGNMOB(1833, purple_haze_bartender);
ASSIGNMOB(1900, postmaster);
ASSIGNMOB(1902, receptionist);
ASSIGNMOB(1916, generic_guard);
/* Tacoma */
ASSIGNMOB(2013, generic_guard);
ASSIGNMOB(2020, hacker);
ASSIGNMOB(2022, janitor);
ASSIGNMOB(2023, fence);
/* club penumbra */
ASSIGNMOB(2112, generic_guard);
ASSIGNMOB(2115, receptionist);
/* Puyallup */
ASSIGNMOB(2306, pike);
ASSIGNMOB(2305, jeff);
/*Lone Star 17th Precinct*/
ASSIGNMOB(3700, captain);
ASSIGNMOB(3708, rodgers);
ASSIGNMOB(3709, delaney);
ASSIGNMOB(3703, generic_guard);
ASSIGNMOB(3720, generic_guard);
ASSIGNMOB(3829, janitor);
ASSIGNMOB(3712, janitor);
/*Seattle State Park*/
ASSIGNMOB(4001, lone_star_park);
ASSIGNMOB(4003, mugger_park);
ASSIGNMOB(4008, janitor);
ASSIGNMOB(4009, gate_guard_park);
ASSIGNMOB(4012, squirrel_park);
ASSIGNMOB(4013, sick_ork);
ASSIGNMOB(4016, adept_guard);
ASSIGNMOB(4019, takehero_tsuyama);
/* Various - zone 116 */
ASSIGNMOB(4100, postmaster);
/*BioHyde Complex*/
ASSIGNMOB(4202, bio_secretary);
ASSIGNMOB(4206, harlten);
ASSIGNMOB(4209, branson);
ASSIGNMOB(4200, bio_guard);
ASSIGNMOB(4203, worker);
/* Tarislar */
ASSIGNMOB(4912, saeder_guard);
/* Seattle */
ASSIGNMOB(5100, generic_guard);
ASSIGNMOB(5101, janitor);
/* Neophytic Guild */
ASSIGNMOB(8010, postmaster);
ASSIGNMOB(60523, receptionist);
/* Council Island */
ASSIGNMOB(9202, doctor_scriptshaw);
ASSIGNMOB(9410, huge_troll);
/* Ork Underground */
ASSIGNMOB(9913, receptionist);
/* Bellevue */
ASSIGNMOB(20342, receptionist);
/* Crime Mall */
ASSIGNMOB(10022, crime_mall_guard);
/* Bradenton */
ASSIGNMOB(14515, hacker);
ASSIGNMOB(14516, fence);
/* Portland */
ASSIGNMOB(14605, receptionist);
ASSIGNMOB(1102, postmaster);
/* Mitsuhama */
ASSIGNMOB(17112, yukiya_dahoto);
/* Seattle 2.0 */
ASSIGNMOB(30500, receptionist);
/* Telestrian */
ASSIGNMOB(18910, receptionist);
/* Smiths Pub */
ASSIGNMOB(38027, smiths_bouncer);
ASSIGNMOB(30701, receptionist);
ASSIGNMOB(37507, painter);
}
/* assign special procedures to objects */
void assign_objects(void)
{
SPECIAL(bank);
SPECIAL(gen_board);
SPECIAL(vendtix);
SPECIAL(clock);
SPECIAL(vending_machine);
SPECIAL(hand_held_scanner);
SPECIAL(anticoagulant);
SPECIAL(toggled_invis);
SPECIAL(desktop);
SPECIAL(portable_gridguide);
SPECIAL(pocket_sec);
ASSIGNOBJ(3, gen_board); /* Rift's Board */
ASSIGNOBJ(4, gen_board); /* Pook's Board */
ASSIGNOBJ(12, gen_board); /* Dunk's Board */
ASSIGNOBJ(22, gen_board); /* old Changelogs */
ASSIGNOBJ(26, gen_board); /* RP Board */
ASSIGNOBJ(28, gen_board); /* Quest Board */
ASSIGNOBJ(31, gen_board); /* War Room Board */
ASSIGNOBJ(50, gen_board); /* Harl's Board */
ASSIGNOBJ(66, gen_board); /* Lofwyr's Board */
ASSIGNOBJ(1006, gen_board); /* Builder Board */
ASSIGNOBJ(1038, gen_board); /* Coders Board */
ASSIGNOBJ(1074, gen_board); /* Administration Board */
ASSIGNOBJ(65126, gen_board);
ASSIGNOBJ(26150, gen_board);
ASSIGNOBJ(1117, desktop);
ASSIGNOBJ(1118, desktop);
ASSIGNOBJ(1119, desktop);
ASSIGNOBJ(1120, desktop);
ASSIGNOBJ(1121, desktop);
ASSIGNOBJ(1122, desktop);
ASSIGNOBJ(1123, desktop);
ASSIGNOBJ(1124, desktop);
ASSIGNOBJ(1125, desktop);
ASSIGNOBJ(1126, desktop);
ASSIGNOBJ(1845, desktop);
ASSIGNOBJ(1846, desktop);
ASSIGNOBJ(1847, desktop);
ASSIGNOBJ(1848, desktop);
ASSIGNOBJ(1904, clock); /* clock */
ASSIGNOBJ(1946, bank); /* atm */
ASSIGNOBJ(2104, gen_board); /* mortal board */
ASSIGNOBJ(2106, gen_board); /* immortal board */
ASSIGNOBJ(2107, gen_board); /* freeze board */
ASSIGNOBJ(2108, bank); /* atm */
ASSIGNOBJ(2506, anticoagulant);
ASSIGNOBJ(42130, anticoagulant);
ASSIGNOBJ(3012, vendtix);
ASSIGNOBJ(4006, clock);
ASSIGNOBJ(4216, clock);
ASSIGNOBJ(8001, gen_board); /* newbie board */
ASSIGNOBJ(8002, gen_board); /* newbie board */
ASSIGNOBJ(8003, gen_board); /* newbie board */
ASSIGNOBJ(8004, gen_board); /* newbie board */
ASSIGNOBJ(8013, gen_board); /* newbie board */
ASSIGNOBJ(9329, vending_machine);
ASSIGNOBJ(10108, vending_machine);
ASSIGNOBJ(9406, hand_held_scanner);
ASSIGNOBJ(29997, gen_board); /* Loki's Board */
ASSIGNOBJ(22445, bank);
ASSIGNOBJ(14645, clock);
ASSIGNOBJ(16234, clock);
ASSIGNOBJ(18884, clock);
ASSIGNOBJ(18950, bank);
ASSIGNOBJ(14726, bank);
ASSIGNOBJ(64900, gen_board); /* RPE Board */
ASSIGNOBJ(65207, gen_board); /* Backstage Group's Board */
ASSIGNOBJ(4603, gen_board);
ASSIGNOBJ(50301, toggled_invis);
ASSIGNOBJ(50305, desktop);
ASSIGNOBJ(8458, desktop);
ASSIGNOBJ(8459, desktop);
ASSIGNOBJ(65214, desktop);
ASSIGNOBJ(4607, desktop);
ASSIGNOBJ(35026, clock);
ASSIGNOBJ(42118, clock);
ASSIGNOBJ(18825, portable_gridguide);
ASSIGNOBJ(39864, portable_gridguide);
ASSIGNOBJ(31542, pocket_sec);
ASSIGNOBJ(39865, pocket_sec);
WSPEC(monowhip);
ASSIGNWEAPON(660, monowhip);
}
/* assign special procedures to rooms */
void assign_rooms(void)
{
SPECIAL(car_dealer);
SPECIAL(oceansounds);
SPECIAL(escalator);
SPECIAL(neophyte_entrance);
SPECIAL(simulate_bar_fight);
SPECIAL(crime_mall_blockade);
SPECIAL(waterfall);
SPECIAL(climb_down_junk_pile);
SPECIAL(climb_up_junk_pile);
SPECIAL(junk_pile_fridge);
SPECIAL(slave);
SPECIAL(roots_office);
SPECIAL(circulation_fan);
SPECIAL(traffic);
SPECIAL(newbie_car);
SPECIAL(auth_room);
SPECIAL(room_damage_radiation);
SPECIAL(rpe_room);
/* Limbo/God Rooms */
ASSIGNROOM(8, oceansounds);
ASSIGNROOM(9, oceansounds);
ASSIGNROOM(15, roots_office);
//ASSIGNROOM(5, room_damage_radiation);
/* Traffic */
ASSIGNROOM(2000, traffic);
ASSIGNROOM(2001, traffic);
ASSIGNROOM(2003, traffic);
ASSIGNROOM(2010, traffic);
ASSIGNROOM(2011, traffic);
ASSIGNROOM(2018, traffic);
ASSIGNROOM(2019, traffic);
ASSIGNROOM(2021, traffic);
ASSIGNROOM(2031, traffic);
ASSIGNROOM(2033, traffic);
ASSIGNROOM(2040, traffic);
ASSIGNROOM(2046, traffic);
ASSIGNROOM(2047, traffic);
ASSIGNROOM(2048, traffic);
ASSIGNROOM(2049, traffic);
ASSIGNROOM(2050, traffic);
ASSIGNROOM(2060, traffic);
ASSIGNROOM(2061, traffic);
ASSIGNROOM(2062, traffic);
ASSIGNROOM(2063, traffic);
ASSIGNROOM(2072, traffic);
ASSIGNROOM(2084, traffic);
/* Carbanado */
ASSIGNROOM(4477, waterfall);
/* Neophytic guild */
ASSIGNROOM(60585, neophyte_entrance);
ASSIGNROOM(60586, newbie_car);
ASSIGNROOM(60562, auth_room);
/* Ork Underground */
ASSIGNROOM(9978, simulate_bar_fight);
/* Tacoma Mall */
ASSIGNROOM(1904, escalator);
ASSIGNROOM(1920, escalator);
ASSIGNROOM(1923, escalator);
ASSIGNROOM(1937, escalator);
/* Crime Mall */
ASSIGNROOM(1399, car_dealer);
ASSIGNROOM(14798, car_dealer);
ASSIGNROOM(14796, car_dealer);
ASSIGNROOM(37505, car_dealer);
ASSIGNROOM(37507, car_dealer);
ASSIGNROOM(37509, car_dealer);
ASSIGNROOM(37511, car_dealer);
ASSIGNROOM(37513, car_dealer);
/* Mitsuhama */
ASSIGNROOM(17171, circulation_fan);
/* Portland */
ASSIGNROOM(18860, escalator);
ASSIGNROOM(18859, escalator);
/* Kuroda's Bouncy Castle */
ASSIGNROOM(35611, rpe_room);
}