static void mech_enterbay_event(MUXEVENT * e) { MECH *mech = (MECH *) e->data, *ds, *tmpm = NULL; long ref = (long) e->data2; long bayn; int x = 5, y = 5; MAP *tmpmap; if(!Started(mech) || Uncon(mech) || Jumping(mech) || (MechType(mech) == CLASS_MECH && (Fallen(mech) || Standing(mech))) || OODing(mech) || (fabs(MechSpeed(mech)) * 5 >= MMaxSpeed(mech) && fabs(MMaxSpeed(mech)) >= MP1) || (MechType(mech) == CLASS_VTOL && AeroFuel(mech) <= 0)) return; tmpmap = getMap(ref); if(!(ds = getMech(tmpmap->onmap))) return; if(!Find_DS_Bay_In_MechHex(mech, ds, &bayn)) return; /* whee */ ref = AeroBay(ds, bayn); StopBSuitSwarmers(FindObjectsData(mech->mapindex), mech, 1); mech_notify(mech, MECHALL, "You enter the bay."); MechLOSBroadcast(mech, tprintf("has entered %s at %d,%d.", GetMechID(ds), MechX(mech), MechY(mech))); MarkForLOSUpdate(mech); if(MechType(mech) == CLASS_MW && !In_Character(ref)) { enter_mw_bay(mech, ref); return; } if(MechCarrying(mech) > 0) tmpm = getMech(MechCarrying(mech)); mech_Rsetmapindex(GOD, (void *) mech, tprintf("%d", ref)); mech_Rsetxy(GOD, (void *) mech, tprintf("%d %d", x, y)); MechLOSBroadcast(mech, "has entered the bay."); loud_teleport(mech->mynum, ref); if(tmpm) { mech_Rsetmapindex(GOD, (void *) tmpm, tprintf("%d", ref)); mech_Rsetxy(GOD, (void *) tmpm, tprintf("%d %d", x, y)); loud_teleport(tmpm->mynum, ref); } }
static int load_update1(void *key, void *data, int depth, void *arg) { const dbref key_val = (dbref)key; XCODE *const xcode_obj = data; FILE *const fp = arg; MAP *map; int doh; char mapbuffer[MBUF_SIZE]; MECH *mech; int i; int ctemp; switch (xcode_obj->type) { case GTYPE_MAP: map = (MAP *)xcode_obj; memset(map->mapobj, 0, sizeof(map->mapobj)); map->map = NULL; strcpy(mapbuffer, map->mapname); doh = (map->flags & MAPFLAG_MAPO); if(strcmp(map->mapname, "Default Map")) map_loadmap(1, map, mapbuffer); if(!strcmp(map->mapname, "Default Map") || !map->map) initialize_map_empty(map, key_val); if(!feof(fp)) { load_mapdynamic(fp, map); if(!feof(fp)) if(doh) load_mapobjs(fp, map); } if(feof(fp)) { map->first_free = 0; map->mechflags = NULL; map->mechsOnMap = NULL; map->LOSinfo = NULL; } debug_fixmap(GOD, map, NULL); break; case GTYPE_MECH: mech = (MECH *)xcode_obj; if(!(FlyingT(mech) && !Landed(mech))) { MechDesiredSpeed(mech) = 0; MechSpeed(mech) = 0; MechVerticalSpeed(mech) = 0; } ctemp = MechCocoon(mech); if(MechCocoon(mech)) { MechCocoon(mech) = 0; initiate_ood((dbref) GOD, mech, tprintf("%d %d %d", MechX(mech), MechY(mech), MechZ(mech))); MechCocoon(mech) = ctemp; } if(!FlyingT(mech) && Started(mech) && Jumping(mech)) mech_Rsetxy(GOD, (void *) mech, tprintf("%d %d", MechX(mech),MechY(mech))); MechStatus(mech) &= ~(BLINDED | UNCONSCIOUS | JUMPING | TOWED); MechSpecials2(mech) &= ~(ECM_ENABLED | ECM_DISTURBANCE | ECM_PROTECTED | ECCM_ENABLED | ANGEL_ECM_ENABLED | ANGEL_ECCM_ENABLED | ANGEL_ECM_PROTECTED | ANGEL_ECM_DISTURBED); MechCritStatus(mech) &= ~(JELLIED | LOAD_OK | OWEIGHT_OK | SPEED_OK); MechWalkXPFactor(mech) = 999; MechCarrying(mech) = -1; MechBoomStart(mech) = 0; MechC3iNetworkSize(mech) = -1; MechHeatLast(mech) = 0; MechCommLast(mech) = 0; // ClearStaggerDamage mech->rd.staggerDamageList = NULL; if(!(MechXPMod(mech))) MechXPMod(mech) = 1; for(i = 0; i < FREQS; i++) if(mech->freq[i] < 0) mech->freq[i] = 0; break; } return 1; }