Trochę kombinowałem z tą wartością i w pliku Constants.d zamieniłem:
const float TRADE_VALUE_MULTIPLIER = 0.15;
na
var float TRADE_VALUE_MULTIPLIER;
Potem w AI_Constants.d dodałem:
var int atr_rhetoric;
func void TRADE_RHETORIC()
{
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 0)
{
TRADE_VALUE_MULTIPLIER = 0.10;
};
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 1)
{
TRADE_VALUE_MULTIPLIER = 0.105;
};
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 2)
{
TRADE_VALUE_MULTIPLIER = 0.11;
};
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 3)
{
TRADE_VALUE_MULTIPLIER = 0.115;
};
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 4)
{
TRADE_VALUE_MULTIPLIER = 0.12;
};
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 5)
{
TRADE_VALUE_MULTIPLIER = 0.125;
};
//i tak dalej, i tak dalej aż do:
if (Npc_GetTalentSkill(hero, NPC_TALENT_RHETORIC) == 100)
{
TRADE_VALUE_MULTIPLIER = 0.60;
};
};
Potem w Startup.d zmieniłem:
func void STARTUP_GLOBAL()
{
Game_InitGerman();
};
func void INIT_GLOBAL()
{
Game_InitGerman();
};
na
func void STARTUP_GLOBAL()
{
Game_InitGerman();
TRADE_RHETORIC();
};
func void INIT_GLOBAL()
{
Game_InitGerman();
TRADE_RHETORIC();
};
A następnie dodałem u nauczyciela retoryki taki dopisek (5 retoryki za 5 PN):
atr_rhetoric = atr_rhetoric+5;
Npc_SetTalentSkill (hero, NPC_TALENT_RHETORIC, atr_rhetoric);
PrintScreen (Retoryka +5, - 1, - 1, FONT_Screen, 2);
TRADE_RHETORIC();
Umiejętność retoryki zwiększa mi się o 5 i z tego co wiem wywołuje się funkcja TRADE_RHETORIC która powinna zaktualizować kurs sprzedaży ale kurs jest taki sam. Jedyna różnica którą zauważyłem to gdy dodałem wpisy do Startup.d to podczas uruchomienia nowej gry albo wczytania jakiegoś zapisu kurs zmienia się na 0.10 (bez tego wynosi 0.30).
Mógłbym prosić o kolejne rady albo wytknięcie mi błędów które zrobiłem? Zależy mi na tym zmiennym kursie i jeśli grzebanie w skryptach nie podziała to zostanie tylko ingerencja w silnik gry na czym się nie znam.