VOID CGymnasium::GetGymnasiumInfo(DT_GYMNASIUM_CLI_INFO& stGymnasiumInfo) { CFaction* poFaction = GetFaction(); UINT32 dwFactionID = GetFactionID(); if (NULL == poFaction) { return ; } if (0 == dwFactionID) { return ; } stGymnasiumInfo.byGymnasiumLevel = static_cast<UINT8>(CFactionMgr::Instance()->GetFactionBuildLevel(dwFactionID, EFB_Gymnasium)); DT_FACTION_PLAYER_CLI stDT_FACTION_PLAYER_CLI = {0}; if ( NULL == poFaction) { return ; } poFaction->GetDT_FACTION_PLAYER_CLI_SELF(stDT_FACTION_PLAYER_CLI, m_poOwner->GetID()); stGymnasiumInfo.dwDoorsTribute = stDT_FACTION_PLAYER_CLI.dwDoorsTributeValues; //权限 em_Faction_Job emTmp = static_cast<em_Faction_Job>(stDT_FACTION_PLAYER_CLI.byJobType); BOOL bRet = CFactorAuthorityPropMgr::Instance()->CkJobAuthority(emTmp, EFA_Build); stGymnasiumInfo.byUpgradeLimit = bRet ? ESM_YES : ESM_NO; }
//Called every time this StaticMap is targeted. void StaticMap::OnTargeted(Player *player) { player->BlankVerbs(); float docking_range = DOCKING_RANGE; if (player->ShipIndex()->GetIsIncapacitated()) { docking_range = -1.0f; } switch (ObjectType()) { case OT_STATION: player->AddVerb(VERBID_DOCK, docking_range); player->AddVerb(VERBID_REGISTER, DOCKING_RANGE); break; case OT_STARGATE: if (Destination() > 0) { //check for faction. long faction_id = GetFactionID(); bool class_specific = GetClassSpecific(); if (player->GetOverrideFaction()) //allow devs and testers to override faction/class restrictions { player->AddVerb(VERBID_GATE, docking_range); } else if (class_specific) { if (faction_id == player->GetFactionID() || faction_id < 1) { player->AddVerb(VERBID_GATE, docking_range); } } else if (faction_id > 0) { if (player->GetFactionStanding(this) >= 0.0f) //allow gate travel if faction is greater than zero { player->AddVerb(VERBID_GATE, docking_range); } } else { player->AddVerb(VERBID_GATE, docking_range); } } break; case OT_PLANET: if (Destination() > 0) { player->AddVerb(VERBID_LAND, docking_range); } break; default: break; }; }