void HourlyQuestUpdate( void ) { UINT32 uiHour = GetWorldHour(); // brothel if ( uiHour == 4 ) { SetFactFalse( FACT_BROTHEL_OPEN ); } else if ( uiHour == 20 ) { SetFactTrue( FACT_BROTHEL_OPEN ); } // bar/nightclub if ( uiHour == 15 ) { UINT8 ubLoop; SetFactTrue( FACT_CLUB_OPEN ); SetFactFalse( FACT_PAST_CLUB_CLOSING_AND_PLAYER_WARNED ); // reset boxes fought for ( ubLoop = 0; ubLoop < NUM_BOXERS; ubLoop++ ) { gfBoxerFought[ ubLoop ] = FALSE; } // if # of boxing matches the player has won is a multiple of // 3, and the boxers haven't rested, then make them rest if ( gfBoxersResting ) { // done resting now! gfBoxersResting = FALSE; gubBoxersRests++; } else if ( gubBoxingMatchesWon / 3 > gubBoxersRests ) { // time for the boxers to rest! gfBoxersResting = TRUE; } } else if ( uiHour == 2 ) { SetFactFalse( FACT_CLUB_OPEN ); } // museum if ( uiHour == 9 ) { SetFactTrue( FACT_MUSEUM_OPEN ); } else if ( uiHour == 18 ) { SetFactFalse( FACT_MUSEUM_OPEN ); } }
SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier ) { UINT8 ubSrcProfile; UINT8 ubDestProfile; MERCPROFILESTRUCT * pNewProfile; ubSrcProfile = pSoldier->ubProfile; if ( ubSrcProfile == LARRY_NORMAL) { ubDestProfile = LARRY_DRUNK; } else if ( ubSrcProfile == LARRY_DRUNK ) { ubDestProfile = LARRY_NORMAL; } else { // I don't think so! return( pSoldier ); } pNewProfile = &gMercProfiles[ ubDestProfile ]; pNewProfile->ubMiscFlags2 = gMercProfiles[ ubSrcProfile ].ubMiscFlags2; pNewProfile->ubMiscFlags = gMercProfiles[ ubSrcProfile ].ubMiscFlags; pNewProfile->sSectorX = gMercProfiles[ ubSrcProfile ].sSectorX; pNewProfile->sSectorY = gMercProfiles[ ubSrcProfile ].sSectorY; pNewProfile->uiDayBecomesAvailable = gMercProfiles[ ubSrcProfile ].uiDayBecomesAvailable; pNewProfile->usKills = gMercProfiles[ ubSrcProfile ].usKills; pNewProfile->usAssists = gMercProfiles[ ubSrcProfile ].usAssists; pNewProfile->usShotsFired = gMercProfiles[ ubSrcProfile ].usShotsFired; pNewProfile->usShotsHit = gMercProfiles[ ubSrcProfile ].usShotsHit; pNewProfile->usBattlesFought = gMercProfiles[ ubSrcProfile ].usBattlesFought; pNewProfile->usTimesWounded = gMercProfiles[ ubSrcProfile ].usTimesWounded; pNewProfile->usTotalDaysServed = gMercProfiles[ ubSrcProfile ].usTotalDaysServed; pNewProfile->bResigned = gMercProfiles[ ubSrcProfile ].bResigned; pNewProfile->bActive = gMercProfiles[ ubSrcProfile ].bActive; pNewProfile->fUseProfileInsertionInfo = gMercProfiles[ ubSrcProfile ].fUseProfileInsertionInfo; pNewProfile->sGridNo = gMercProfiles[ ubSrcProfile ].sGridNo; pNewProfile->ubQuoteActionID = gMercProfiles[ ubSrcProfile ].ubQuoteActionID; pNewProfile->ubLastQuoteSaid = gMercProfiles[ ubSrcProfile ].ubLastQuoteSaid; pNewProfile->ubStrategicInsertionCode = gMercProfiles[ ubSrcProfile ].ubStrategicInsertionCode; pNewProfile->bMercStatus = gMercProfiles[ ubSrcProfile ].bMercStatus; pNewProfile->bSectorZ = gMercProfiles[ ubSrcProfile ].bSectorZ; pNewProfile->usStrategicInsertionData = gMercProfiles[ ubSrcProfile ].usStrategicInsertionData; pNewProfile->sTrueSalary = gMercProfiles[ ubSrcProfile ].sTrueSalary; pNewProfile->ubMiscFlags3 = gMercProfiles[ ubSrcProfile ].ubMiscFlags3; pNewProfile->ubDaysOfMoraleHangover = gMercProfiles[ ubSrcProfile ].ubDaysOfMoraleHangover; pNewProfile->ubNumTimesDrugUseInLifetime = gMercProfiles[ ubSrcProfile ].ubNumTimesDrugUseInLifetime; pNewProfile->uiPrecedentQuoteSaid = gMercProfiles[ ubSrcProfile ].uiPrecedentQuoteSaid; pNewProfile->sPreCombatGridNo = gMercProfiles[ ubSrcProfile ].sPreCombatGridNo; // CJC: this is causing problems so just skip the transfer of exp... /* pNewProfile->sLifeGain = gMercProfiles[ ubSrcProfile ].sLifeGain; pNewProfile->sAgilityGain = gMercProfiles[ ubSrcProfile ].sAgilityGain; pNewProfile->sDexterityGain = gMercProfiles[ ubSrcProfile ].sDexterityGain; pNewProfile->sStrengthGain = gMercProfiles[ ubSrcProfile ].sStrengthGain; pNewProfile->sLeadershipGain = gMercProfiles[ ubSrcProfile ].sLeadershipGain; pNewProfile->sWisdomGain = gMercProfiles[ ubSrcProfile ].sWisdomGain; pNewProfile->sExpLevelGain = gMercProfiles[ ubSrcProfile ].sExpLevelGain; pNewProfile->sMarksmanshipGain = gMercProfiles[ ubSrcProfile ].sMarksmanshipGain; pNewProfile->sMedicalGain = gMercProfiles[ ubSrcProfile ].sMedicalGain; pNewProfile->sMechanicGain = gMercProfiles[ ubSrcProfile ].sMechanicGain; pNewProfile->sExplosivesGain = gMercProfiles[ ubSrcProfile ].sExplosivesGain; pNewProfile->bLifeDelta = gMercProfiles[ ubSrcProfile ].bLifeDelta; pNewProfile->bAgilityDelta = gMercProfiles[ ubSrcProfile ].bAgilityDelta; pNewProfile->bDexterityDelta = gMercProfiles[ ubSrcProfile ].bDexterityDelta; pNewProfile->bStrengthDelta = gMercProfiles[ ubSrcProfile ].bStrengthDelta; pNewProfile->bLeadershipDelta = gMercProfiles[ ubSrcProfile ].bLeadershipDelta; pNewProfile->bWisdomDelta = gMercProfiles[ ubSrcProfile ].bWisdomDelta; pNewProfile->bExpLevelDelta = gMercProfiles[ ubSrcProfile ].bExpLevelDelta; pNewProfile->bMarksmanshipDelta = gMercProfiles[ ubSrcProfile ].bMarksmanshipDelta; pNewProfile->bMedicalDelta = gMercProfiles[ ubSrcProfile ].bMedicalDelta; pNewProfile->bMechanicDelta = gMercProfiles[ ubSrcProfile ].bMechanicDelta; pNewProfile->bExplosivesDelta = gMercProfiles[ ubSrcProfile ].bExplosivesDelta; */ memcpy( pNewProfile->bInvStatus, gMercProfiles[ ubSrcProfile ].bInvStatus , sizeof( UINT8) * 19 ); memcpy( pNewProfile->bInvStatus, gMercProfiles[ ubSrcProfile ].bInvStatus , sizeof( UINT8) * 19 ); memcpy( pNewProfile->inv , gMercProfiles[ ubSrcProfile ].inv , sizeof( UINT16 ) * 19 ); memcpy( pNewProfile->bMercTownReputation , gMercProfiles[ ubSrcProfile ].bMercTownReputation , sizeof( UINT8 ) * 20 ); // remove face DeleteSoldierFace( pSoldier ); pSoldier->ubProfile = ubDestProfile; // create new face pSoldier->iFaceIndex = InitSoldierFace( pSoldier ); // replace profile in group ReplaceSoldierProfileInPlayerGroup( pSoldier->ubGroupID, ubSrcProfile, ubDestProfile ); pSoldier->bStrength = pNewProfile->bStrength + pNewProfile->bStrengthDelta; pSoldier->bDexterity = pNewProfile->bDexterity + pNewProfile->bDexterityDelta; pSoldier->bAgility = pNewProfile->bAgility + pNewProfile->bAgilityDelta; pSoldier->bWisdom = pNewProfile->bWisdom + pNewProfile->bWisdomDelta; pSoldier->bExpLevel = pNewProfile->bExpLevel + pNewProfile->bExpLevelDelta; pSoldier->bLeadership = pNewProfile->bLeadership + pNewProfile->bLeadershipDelta; pSoldier->bMarksmanship = pNewProfile->bMarksmanship + pNewProfile->bMarksmanshipDelta; pSoldier->bMechanical = pNewProfile->bMechanical + pNewProfile->bMechanicDelta; pSoldier->bMedical = pNewProfile->bMedical + pNewProfile->bMedicalDelta; pSoldier->bExplosive = pNewProfile->bExplosive + pNewProfile->bExplosivesDelta; if ( pSoldier->ubProfile == LARRY_DRUNK ) { SetFactTrue( FACT_LARRY_CHANGED ); } else { SetFactFalse( FACT_LARRY_CHANGED ); } DirtyMercPanelInterface( pSoldier, DIRTYLEVEL2 ); return( pSoldier ); }