FS25 KONTRAT YÖNETİCİSİ
===============================================================================

Kontrat Yöneticisi, tarla kontratlarının denetimini sunucu yöneticisine verir
ve kontratların her çiftlik için adil kalmasını sağlar. Dedicated sunucuda,
kurulan çok oyunculu oyunlarda ve tek oyunculuda çalışır; yalnızca oyunun
kendi ekranlarını kullanır.

OYUN İÇİ ARAYÜZ (oyunun kendi ekranları)
- ESC > Ayarlar > "Kontrat Yöneticisi" alt sekmesi: tüm kurallar oyunun stok
  aç/kapa ve çoklu seçenek kontrolleriyle düzenlenir. Yalnızca sunucu
  yöneticisi değiştirebilir; diğer oyuncular yalnızca "Çiftliğinizin
  istatistiği" bölümünü görür (tamamlanan/başarısız/iptal/süre aşımı,
  toplam kazanç ve ceza, son 5 kontrat).
- ESC > Kontratlar: seçili kontratın detay listesine ek satırlar gelir:
  kalan süre, olası ceza, teslim edilecek ve size kalacak miktar, teslim
  edilen ve kalan miktar, bonuslar, çiftliğin aktif kontratı / limit.
- Ayar değişiklikleri anında tüm oyunculara yayılır ve birkaç saniye içinde
  diske yazılır.

KURULUM
1. FS25_ContractManager.zip dosyasını sunucunun mods klasörüne yükleyin.
2. Modu kayıt için etkinleştirin ve sunucuyu yeniden başlatın.
3. Bağlanan bütün PC/Mac oyuncularında aynı mod sürümü bulunmalıdır. Sürümler
   farklıysa mod bunu fark eder ve oyuncuya uyarı penceresi açar.

KORUMA KURALLARI
- Kontrat ürünü aynı çiftliğe ait biçerdöver, römork, kamyon ve aktarma
  araçları arasında taşınabilir.
- Yere dökme engellenir.
- Başka çiftliğe ait araca aktarma engellenir.
- Çiftlik silosu, fabrika, bunker ve yanlış satış noktasına boşaltma
  engellenir.
- Yalnızca kontratta gösterilen teslim noktası ürünü kabul eder.
- Hasat veya teslimat başladıktan sonra kontrat iptal edilemez.
- Kontrat süre aşımı ya da başka zorunlu sebeple başarısız olursa,
  kontrat kabulünden sonra çiftliğin araçlarında/balyalarında oluşan net
  ürün miktarı geri alınır. En fazla kontratın kendi ürettiği kadar alınır
  (teslim edilen düşülür); ortak çiftliklerin araçları da taranır.

AYAR DOSYASI
Documents\My Games\FarmingSimulator2025\modSettings\FS25_ContractManager.xml
İlk çalıştırmada varsayılanlarla oluşturulur. Geçersiz değerler varsayılana
çekilir ve log.txt'ye yazılır. Alanlar:
  guard#enabled / confiscateOnFail / blockCancelAfterProgress
  reward#multiplier (1.25)  ödül çarpanı; #min / #max taban-tavan (0 = yok)
  reward#failPenaltyPercent (10)  başarısız/iptal/süre aşımında ödülün yüzdesi ceza
  reward#leaseCostMultiplier (1.0)  kiralık makine maliyeti çarpanı
  harvest#keepPercent (7)  hasadın çiftliğe kalan yüzdesi; oyun varsayılanı %7.
    Artırınca teslim edilecek miktar azalır, elinizde kalan ürün artar.
  harvest#keepPercentBale (10)  balya kontratları için aynısı
  limits#maxActivePerFarm (3)  çiftlik başına aynı anda aktif kontrat (0 = sınırsız)
  generation#maxTotal (0 = oyun varsayılanı, en çok 80)  panodaki toplam kontrat
  generation#maxPerType (0 = oyun varsayılanı)  tür başına üst sınır
  generation#refreshMultiplier (1.0)  yeni kontrat üretim aralığı çarpanı
  duration#multiplier (1.0)  yeni üretilen kontratların süresi
  duration#warnAtMinutes ("60,15")  bitişe kalan oyun dakikası eşiklerinde uyarı
  types/type#name #enabled #weight  kontrat türü aç/kapat ve göreli ağırlık
  compat#overrideBetterContracts (false)  aşağıya bakın

BETTERCONTRACTS İLE BİRLİKTE
FS25_BetterContracts da yüklüyse ödül, ceza, limit, üretim ve süre kuralları
otomatik olarak geri çekilir (iki mod aynı noktalara yazar, çarpanlar
katlanırdı). Ürün koruması ve kontrat geçmişi çalışmaya devam eder.
Ayarlar > Kontrat Yöneticisi > Uyumluluk > "BetterContracts üstüne uygula"
açarsanız bu modun kuralları BetterContracts'ın üstüne uygulanır; bunu yalnızca
bilinçli yapın (ayar dosyasındaki karşılığı compat#overrideBetterContracts).

TEK OYUNCULU
Tek oyunculuda tek çiftlik olduğu için ortaklık, rezervasyon, rezerv harita
işareti ve devretme kapalıdır; ayarlarda sönük görünür ve açılamaz. Kayıtlı
değerler korunur, aynı ayarlar çok oyunculu oyunda yine geçerli olur.

KONTRAT GEÇMİŞİ
Sunucu, kabul edilen / biten kontratları ve çiftlik başına istatistiği
kayıt klasöründeki FS25_ContractManager.xml içinde tutar (son 200 kontrat).
Oyun içinde: Kontrat Yönetimi > Geçmiş, ve Ayarlar sekmesinde son 5 kontrat.

İTİBAR VE SIRALAMA (1.1)
- Tamamlanan kontrat çiftliğe puan kazandırır; başarısız, iptal ve süre aşımı
  puan düşürür (Ayarlar > Kontrat Yöneticisi > İtibar).
- Puan arttıkça ödül bonusu (en yüksek puanda %25) ve eşik üstünde +1 aktif
  kontrat hakkı. Yönetici iptali puan düşürmez.
- Ayar sekmesindeki istatistik bölümünde tüm çiftliklerin sıralaması görünür.
- Tarla bekleme süresi: kontratı biten tarla, ayarlanan oyun saati kadar yeni
  kontrat almaz (Üretim > Tarla bekleme süresi; 0 = kapalı).

KONTRAT REZERVASYONU (1.2)
- Kontratlar sayfasında kabul edilmemiş bir kontrat seçip alt çubuktaki
  "Rezerve et" ile çiftliğiniz adına ayarlanan dakika kadar rezerve edin;
  o sürede başka çiftlik alamaz. Çiftlik başına tek rezervasyon.
- Kabul edince, süre dolunca ya da "Rezervasyonu bırak" ile kalkar.

KONTRAT YÖNETİMİ SAYFASI (1.8)
- ESC menüsünde kendi sekmesi; kenar çubuğunda oyunun Kontratlar sayfasının hemen
  altında durur. Üç filtre: Aktif, Yeni, Geçmiş.
- Listeden bir kontrat seçin; altında detayı ve yapabileceğiniz işlemler
  buton olarak çıkar: rezerve et/bırak, ortağa davet et, ortaklığı kabul et,
  ortaklıktan ayrıl, devret, zorla iptal, çiftliğe ata, panoyu yenile.
- Hedef çiftlik gerektiren işlemlerde "Hedef çiftlik" satırındaki seçiciyi
  (oyunun kendi ok tuşlu kontrolü) kullanarak çiftliği seçin.
- Yönetici olmayan oyuncular yalnızca kendi kontratlarını ve kendilerine açık
  işlemleri görür.

ORTAKLIK KONTRATLAR SAYFASINDA + ARAYÜZ ANAHTARI (1.11)
- Kontratlar sayfasında kendi çalışan kontratınızı seçince alt çubukta
  "Ortağa davet et" çıkar; açılan pencerede çiftliği seçip daveti gönderin.
  Kontrat Yönetimi sayfası bunun için şart değil.
- Davet edilen ya da ortak olan çiftlik, kontratı kendi Aktif listesinde görür;
  kabul/reddet/ayrıl butonları oradadır. Sahip olmadığı kontratta oyunun İptal
  butonu gösterilmez.
- Ayarlar > Arayüz > "Menüde Kontrat Yönetimi sayfası": kenar çubuğundaki sekmeyi
  anında gizler/gösterir. Ortaklık sistemi ise Ayarlar > Ortak kontrat > açık/kapalı.

ORTAK KONTRAT - ÇİFTLİK BAŞINA KAYIT (1.9)
- Ortak kontratta "Ortaklık" bölümü, katılan her çiftliği kendi satırında gösterir:
  rolü (sahip/ortak), teslim ettiği litre, payı ve o ana kadarki hak edişi.
  Katkı henüz ölçülmediyse "eşit bölüşüm" yazar.
- Bekleyen davetler de burada görünür: hangi çiftlik, kaç dakika sonra düşecek.
- Davet edilen çiftlik "Ortaklığı kabul et" ya da "Daveti reddet" seçebilir.
- Geri alınamayan işlemler (davet, devir, zorla iptal, çiftliğe ata, panoyu yenile,
  ortaklıktan ayrıl) çalışmadan önce oyunun kendi onay penceresini açar.
  Pencere açılamazsa satır soruya döner ve ikinci basış uygular; hedef çiftliği
  değiştirirseniz ya da başka kontrat seçerseniz o onay düşer.

ORTAK KONTRAT (1.7)
- Kontratı alan çiftlik başka bir çiftliği ortak edebilir: Kontratlar ya da
  Kontrat Yönetimi sayfasındaki "Ortak davet et" ile çiftliği seçin. Davet edilen
  oyuncuya pencere açılır; Enter ile kabul eder ya da Kontratlar sayfasındaki
  "Ortaklığı kabul et" ile katılır.
- Ödül katkıya göre bölünür: teslim edilen litre ve tarlada çalışılan süre
  ölçülür. Katkı yoksa eşit bölünür. Zarar da aynı oranda paylaşılır.
- Ortak çiftlik kontrat ürününü taşıyabilir ve tarlada çalışabilir; koruma
  ortağı kendi çiftliği gibi görür.
- Aktif kontrat limiti ve kota yalnızca sahibe işler; itibar ortağa yarım yazılır.
- Ayarlar > Ortak kontrat: açık/kapalı, en fazla ortak, davet süresi.

ZİNCİR VE NPC (1.6)
- Kontrat zinciri: aynı tarlada hazırlık, ekim, bakım, hasat sırasını takip eden
  çiftlik sonraki adımda ek ödül alır (Ayarlar > Zincir ve NPC).
- NPC ilişkisi: aynı tarla sahibinin işlerini yapan çiftlik o kişiden daha iyi
  ödül alır; her tamamlanan iş bonusu artırır.
- Kısmi ödeme: başarısız kontratta tamamlanan orana göre ödemenin bir kısmı
  yapılabilir (Ayarlar > Ödül ve ceza).
- Kademeli ceza: üst üste başarısızlıkta ceza yüzdesi artar, başarıyla sıfırlanır.
- Kontrat kotası: çiftlik başına günlük ve aylık kabul limiti (Ayarlar > Limitler).

KİRALIK MAKİNE (1.5)
- Ayarlar > Kiralık makine: kontratla makine kiralama tamamen kapatılabilir ya
  da itibar eşiğine bağlanabilir. İzin yoksa kontrat makinesiz başlar ve
  çiftliğe bildirim gider.

UZAKLIK VE ZORLUK (1.4)
- Uzaklık bonusu: kontrat tarlası çiftlik merkezinden (çiftlik evi, yoksa
  arazilerin ortası) uzaklaştıkça km başına yüzde, üst sınırlı.
- Küçük tarla bonusu: referans alanın altındaki tarlalar küçüldükçe daha çok
  kazandırır.
- Tür zorluğu bonusu: taş toplama, ölü ağaç, ağaç taşıma, kaya, ot, çapa,
  sarma ve sürme kontratlarına sabit ek yüzde.
  Üçü de Ayarlar > Uzaklık ve zorluk; varsayılan kapalı. Detayda satır olarak
  görünür.

HARİTA İŞARETLERİ (1.3)
- Çiftliğinizin rezerve ettiği kontratın tarlası haritada işaretlenir; isterseniz
  panodaki tüm açık kontratlar da (Ayarlar > Harita). Oyunun kendi işaretleri.

ZAMANLI BONUSLAR (1.3, gerçek saat)
- Hafta sonu ve mutlu saat bonusu ödüle eklenir (Ayarlar > Zamanlı bonuslar).
  Varsayılan kapalı. Kontrat detayında "Etkinlik bonusu" satırı görünür.

YÖNETİCİ ARAÇLARI (sunucu yöneticisi)
- ESC > Kontratlar sayfasının alt çubuğunda "Panoyu yenile": kabul edilmemiş
  kontratlar tek tek yenileriyle değiştirilir. Oyun bir kontratın yerine
  yenisini üretemezse (uygun tarla yoksa) yenileme durur, panonun kalanı
  korunur ve uyarı çıkar.
- "Zorla iptal" Kontrat Yönetimi sayfasındadır ve onay ister: koruma engeli
  aşılır, para cezası uygulanmaz, biriken kontrat ürünü yine geri alınır.
- Konsol komutları (cm*) kapalıdır; tüm işlemler oyun içi butonlarla ve web
  panelinden yapılır. Hepsi sunucuda yetki doğrulamasından geçer.

WEB PANELİ (Discord Bridge panosu)
Köprü panosunun Kontratlar sekmesinde "Kontrat kuralları" kartı bulunur:
yönetici rolü tüm kuralları ve kontrat türlerini oradan değiştirebilir,
kontratı zorla iptal edebilir ve panoyu yenileyebilir. Değişiklik komut
dosyasıyla sunucuya ulaşır, sunucu uygular ve sonucu geri bildirir.

DISCORD BRIDGE
FS25_DiscordBridge modu da yüklüyse kontrat kabul/bitiş/ödeme, süre uyarısı,
koruma engelleri ve kural değişiklikleri Discord'a gider. Ayarlar sekmesindeki
"Entegrasyonlar > Discord Bridge olayları" ile kapatılabilir. Köprü yoksa
hiçbir şey olmaz.

SORUN BİLDİRİMİ
İletişim: hello@kahrastudio.art · Kaynak kod: https://github.com/Dostlar-Studio/FS25_ContractManager
log.txt içinde "[CM]" geçen satırları gönderin. Oyunun kendi kontrat kodunda
bir hata yakalanırsa "[CM] Game field-completion code failed" satırı yazılır
ve oyun kapanmaz; bu satırı da ekleyin.

ÖNEMLİ
Oyun, aynı türdeki normal ürün ile kontrat ürününü ayrı ayrı etiketlemez.
Bu nedenle aktif kontrat varken aynı ürün türünü kendi silonuzdan araçlara
yüklemeyin. Kurulumdan önce kayıt dosyanızın yedeğini alın.

Bu bir script modudur; konsollarda çalışmaz.
