From: Tim R. <gna...@us...> - 2004-04-25 17:36:56
|
Update of /cvsroot/darkeyetool/det/src/dsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8446 Modified Files: PersonHandlerGenerator.cpp Log Message: - "Akademische Ausbildung (Krieger)" hinzugefügt - "Begabung für [Talent]" ist nicht kumulativ zu einer Akademischen Ausbildung - Beim hinzufügen von automatischen SF mit (vorgegebener) Spezifizierung und Stufen (Rüstungsgewöhnung) über Kultur oder Profession wurde die Spezifizierung nicht übernommen Index: PersonHandlerGenerator.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/dsa/PersonHandlerGenerator.cpp,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** PersonHandlerGenerator.cpp 13 Apr 2004 21:45:45 -0000 1.51 --- PersonHandlerGenerator.cpp 25 Apr 2004 17:30:39 -0000 1.52 *************** *** 1052,1067 **** faktor = 0.5; ! if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(talente()->Zeige(talent)->Gruppe(), false))) ! return ceil((regeln()->Aktivierungsfaktor(SpalteLeichter(talente()->Zeige(talent)->SKTSpalte_()))+0.5)*faktor); else return ceil((regeln()->Aktivierungsfaktor(talente()->Zeige(talent)->SKTSpalte_())+0.5)*faktor); } ! if (kampftechniken()->Existiert(talent)) if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(Kampf, false))) return regeln()->Aktivierungsfaktor(SpalteLeichter(kampftechniken()->Zeige(talent)->SKTSpalte_()))+0.5; else ! return regeln()->Aktivierungsfaktor(kampftechniken()->Zeige(talent)->SKTSpalte_())+0.5; ! std::string temptal = talent; std::pair<bool, bool> rv = SpracheOderSchrift(temptal); --- 1052,1079 ---- faktor = 0.5; ! // "Begabung für ..." ist nicht kumulativ zu Akademische Ausbildung ! if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + talente()->Zeige(talent)->ID())) ! return regeln()->Aktivierungsfaktor(SpalteLeichter(talente()->Zeige(talent)->SKTSpalte_()))+0.5; ! else if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(talente()->Zeige(talent)->Gruppe(), false))) ! return regeln()->Aktivierungsfaktor(SpalteLeichter(talente()->Zeige(talent)->SKTSpalte_()))+0.5; else return ceil((regeln()->Aktivierungsfaktor(talente()->Zeige(talent)->SKTSpalte_())+0.5)*faktor); } ! if (kampftechniken()->Existiert(talent)) { ! float faktor = 1.0; ! ! if (P()->charakteristika_.Existiert(_t("Akademische Ausbildung (Krieger)"))) ! faktor = 0.5; ! ! if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(Kampf, false))) return regeln()->Aktivierungsfaktor(SpalteLeichter(kampftechniken()->Zeige(talent)->SKTSpalte_()))+0.5; + else if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + kampftechniken()->Zeige(talent)->ID())) + return regeln()->Aktivierungsfaktor(SpalteLeichter(kampftechniken()->Zeige(talent)->SKTSpalte_()))+0.5; else ! return ceil((regeln()->Aktivierungsfaktor(kampftechniken()->Zeige(talent)->SKTSpalte_())+0.5)*faktor); ! } ! std::string temptal = talent; std::pair<bool, bool> rv = SpracheOderSchrift(temptal); *************** *** 1171,1175 **** if (P()->talente_.Zeige(talent)->Wert()<10) faktor = 0.5; ! // genug TGP? if (ceil(regeln()->SKT(P()->talente_.Hole(talent).SKTSpalte_(), P()->talente_.Zeige(talent)->Wert()+1)*faktor) --- 1183,1192 ---- if (P()->talente_.Zeige(talent)->Wert()<10) faktor = 0.5; ! ! // "Begabung für ..." ist nicht kumulativ mit Akademischer Ausbildung ! if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + talente()->Zeige(talent)->ID()) || ! (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(talente()->Zeige(talent)->Gruppe(), false)))) ! faktor = 1.0; ! // genug TGP? if (ceil(regeln()->SKT(P()->talente_.Hole(talent).SKTSpalte_(), P()->talente_.Zeige(talent)->Wert()+1)*faktor) *************** *** 1189,1194 **** return false; // genug TGP? ! if (regeln()->SKT(P()->kampftechniken_.Hole(talent).SKTSpalte_(), P()->kampftechniken_.Zeige(talent)->Wert()+1) > (TalentGPMax()-TalentGP())) return false; --- 1206,1226 ---- return false; + float faktor = 1.0; + + if (P()->charakteristika_.Existiert(_t("Akademische Ausbildung (Krieger)"))) { + int maxaka = 10; + if (P()->charakteristika_.Existiert(_t("Veteran"))) + maxaka = 15; + if (P()->kampftechniken_.Zeige(talent)->Wert()<maxaka) + faktor = 0.5; + } + + // "Begabung für ..." ist nicht kumulativ zu Akademische Ausbildung + if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + talent) || + (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(Kampf, false)))) + faktor = 1.0; + // genug TGP? ! if (ceil(regeln()->SKT(P()->kampftechniken_.Hole(talent).SKTSpalte_(), P()->kampftechniken_.Zeige(talent)->Wert()+1)*faktor) > (TalentGPMax()-TalentGP())) return false; *************** *** 2370,2374 **** if (stufensumme > sfd->MaximalStufe()) stufensumme = sfd->MaximalStufe(); ! sftemp.FuegeEin(Sonderfertigkeit(sfd->Stufe(stufensumme))); } else { // nicht (HatStufen()) if (sftemp.Existiert(sf.ID())) // gibts schon --- 2402,2411 ---- if (stufensumme > sfd->MaximalStufe()) stufensumme = sfd->MaximalStufe(); ! ! Sonderfertigkeit newsf = Sonderfertigkeit(sfd->Stufe(stufensumme)); ! if (newsf.Definition()->BrauchtSpezifizierung()) { ! newsf.Spezifizierung(sf.Spezifizierung()); ! } ! sftemp.FuegeEin(newsf); } else { // nicht (HatStufen()) if (sftemp.Existiert(sf.ID())) // gibts schon *************** *** 2636,2639 **** --- 2673,2682 ---- for (Kampftechniken::iterator k = P()->kampftechniken_.begin(); k != P()->kampftechniken_.end(); ++k) { + bool aka = (P()->charakteristika_.Existiert(_t("Akademische Ausbildung (Krieger)"))); + + int maxaka = 10; + if (P()->charakteristika_.Existiert(_t("Veteran"))) + maxaka = 15; + int basiswert = 0; if (!kampftechnikenbasis_.Existiert(k->first)) *************** *** 2642,2646 **** --- 2685,2698 ---- basiswert = kampftechnikenbasis_.Zeige(k->first)->Wert(); int zielwert = P()->kampftechniken_.Zeige(k->first)->Wert(); + // "Begabung für ..." ist nicht kumulativ zu Akademische Ausbildung + if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + k->first) || + (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(Kampf, false)))) + aka = false; + + while (zielwert > basiswert) + if((basiswert<maxaka)&&(aka)) + tgp += ceil(regeln()->SKT(k->second.SKTSpalte_(), ++basiswert)*0.5); + else tgp += regeln()->SKT(k->second.SKTSpalte_(), ++basiswert); } *************** *** 2655,2658 **** --- 2707,2715 ---- basiswert = talentebasis_.Zeige(t->first)->Wert(); int zielwert = P()->talente_.Zeige(t->first)->Wert(); + // "Begabung für ..." ist nicht kumulativ zu Akademische Ausbildung + if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + t->first) || + (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(t->second.Gruppe(), false)))) + aka = false; + while (zielwert > basiswert) if ((basiswert<10)&&(aka)) *************** *** 2671,2674 **** --- 2728,2737 ---- basiswert = sprachenbasis_.Zeige(sp->first)->Wert(); int zielwert = P()->sprachen_.Zeige(sp->first)->Wert(); + + // "Begabung für ..." ist nicht kumulativ zu Akademische Ausbildung + if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + sp->first) || + (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(SprachenUndSchriften, false)))) + aka = false; + while (zielwert > basiswert) if ((basiswert<10)&&(aka)) *************** *** 2687,2690 **** --- 2750,2759 ---- basiswert = schriftenbasis_.Zeige(sch->first)->Wert(); int zielwert = P()->schriften_.Zeige(sch->first)->Wert(); + + // "Begabung für ..." ist nicht kumulativ zu Akademische Ausbildung + if (P()->charakteristika_.Existiert(_t("Begabung für") + " " + sch->first) || + (P()->charakteristika_.Existiert(_t("Begabung für") + " " + TalentgruppeString(SprachenUndSchriften, false)))) + aka = false; + while (zielwert > basiswert) if ((basiswert<10)&&(aka)) *************** *** 2838,2841 **** --- 2907,2917 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.52 2004/04/25 17:30:39 gnaddelwarz + // - "Akademische Ausbildung (Krieger)" hinzugefügt + // - "Begabung für [Talent]" ist nicht kumulativ zu einer Akademischen Ausbildung + // - Beim hinzufügen von automatischen SF mit (vorgegebener) Spezifizierung und Stufen + // (Rüstungsgewöhnung) über Kultur oder Profession wurde die Spezifizierung nicht + // übernommen + // // Revision 1.51 2004/04/13 21:45:45 vrandezo // Akademische Ausbildung (Magier) implementiert |