21
Zapowiedzi modyfikacji / [G2NK] Gothic: Yndrzej's Edition
OrtegaX - 2026-01-23, 20:42Piękna sprawa, czekam! <3
if(talent == NPC_TALENT_1H)
{
B_RaiseFightTalent(oth,NPC_TALENT_1H,percent);
Learned_1H = Learned_1H + percent;
if(oth.aivar[REAL_TALENT_1H] >= (oth.aivar[REAL_TALENT_2H] + 30))
{
B_RaiseFightTalent(oth,NPC_TALENT_2H,percent);
Learned_2H = Learned_2H + percent;
PrintScreen(PRINT_Learn1H_and_2H,-1,-1,FONT_Screen,2);
}
else
{
PrintScreen(PRINT_Learn1H,-1,-1,FONT_Screen,2);
};
return TRUE;
};
B_RaiseFightTalent(oth,NPC_TALENT_1H,percent); Npc_SetTalentValue(hero, NPC_TALENT_1H, Npc_GetTalentValue(hero, NPC_TALENT_1H)+percent);
//////////////////////////////////////////////////////////////////////////
// NOTR learning weapon and atrribute system
// ===============
//
//////////////////////////////////////////////////////////////////////////
func int B_GetLearnCostTalent(var C_Npc oth,var int talent,var int skill)
{
var int kosten;
kosten = 0;
if(talent == NPC_TALENT_1H)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 90)
{
kosten = 4;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 60)
{
kosten = 3;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 30)
{
kosten = 2;
}
else
{
kosten = 1;
};
kosten = kosten * skill;
};
if(talent == NPC_TALENT_2H)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= 90)
{
kosten = 4;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= 60)
{
kosten = 3;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= 30)
{
kosten = 2;
}
else
{
kosten = 1;
};
kosten = kosten * skill;
};
if(talent == NPC_TALENT_BOW)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= 90)
{
kosten = 4;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= 60)
{
kosten = 3;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= 30)
{
kosten = 2;
}
else
{
kosten = 1;
};
kosten = kosten * skill;
};
if(talent == NPC_TALENT_CROSSBOW)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= 90)
{
kosten = 4;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= 60)
{
kosten = 3;
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= 30)
{
kosten = 2;
}
else
{
kosten = 1;
};
kosten = kosten * skill;
};
return kosten;
};
func void B_SetFightSkill(var C_Npc slf,var int talent,var int percent)
{
if(talent == NPC_TALENT_1H)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 0)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,0);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 30)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,1);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 60)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,2);
};
};
if(talent == NPC_TALENT_2H)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= 0)
{
Npc_SetTalentSkill(slf,NPC_TALENT_2H,0);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= 30)
{
Npc_SetTalentSkill(slf,NPC_TALENT_2H,1);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= 60)
{
Npc_SetTalentSkill(slf,NPC_TALENT_2H,2);
};
};
if(talent == NPC_TALENT_BOW)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= 0)
{
Npc_SetTalentSkill(slf,NPC_TALENT_BOW,0);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= 30)
{
Npc_SetTalentSkill(slf,NPC_TALENT_BOW,1);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= 60)
{
Npc_SetTalentSkill(slf,NPC_TALENT_BOW,2);
};
};
if(talent == NPC_TALENT_CROSSBOW)
{
if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= 0)
{
Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,0);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= 30)
{
Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,1);
};
if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= 60)
{
Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,2);
};
};
};
func int B_TeachFightTalentPercent(var C_Npc slf,var C_Npc oth,var int talent,var int percent,var int teacherMAX)
{
var string concatText;
var int kosten;
var int realHitChance;
kosten = B_GetLearnCostTalent(oth,talent,1) * percent;
if((talent != NPC_TALENT_1H) && (talent != NPC_TALENT_2H) && (talent != NPC_TALENT_BOW) && (talent != NPC_TALENT_CROSSBOW))
{
Print("*** Błąd: Zły parametr ***");
return FALSE;
};
if(talent == NPC_TALENT_1H)
{
realHitChance = Learned_1H; /// nie wiem czy dobrze
}
else if(talent == NPC_TALENT_2H)
{
realHitChance = Learned_2H; /// nie wiem czy dobrze
}
else if(talent == NPC_TALENT_BOW)
{
realHitChance = Learned_Bow; /// nie wiem czy dobrze
}
else if(talent == NPC_TALENT_CROSSBOW)
{
realHitChance = Learned_CrossBow; /// nie wiem czy dobrze
};
if(realHitChance >= teacherMAX)
{
concatText = ConcatStrings("Maksimum dla tego nauczyciela wynosi ",IntToString(teacherMAX));
PrintScreen(concatText,-1,-1,"FONT_OLD_20_WHITE.TGA",2);
B_Say(slf,oth,"$NOLEARNYOUREBETTER");
return FALSE;
};
if((realHitChance + percent) > teacherMAX)
{
concatText = ConcatStrings("Maksimum dla tego nauczyciela wynosi ",IntToString(teacherMAX));
PrintScreen(concatText,-1,-1,"FONT_OLD_20_WHITE.TGA",2);
B_Say(slf,oth,"$NOLEARNOVERPERSONALMAX");
return FALSE;
};
if(oth.lp < kosten)
{
PrintScreen("Za mało Punktów Nauki!",-1,-1,"FONT_OLD_20_WHITE.TGA",2);
B_Say(slf,oth,"$NOLEARNNOPOINTS");
return FALSE;
};
oth.lp = oth.lp - kosten;
if(talent == NPC_TALENT_1H)
{
Npc_SetTalentValue(hero, NPC_TALENT_1H, Npc_GetTalentValue(hero, NPC_TALENT_1H)+percent);
if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= (Npc_GetTalentValue(hero,NPC_TALENT_2H) +30))
{
Npc_SetTalentValue(hero, NPC_TALENT_2H, Npc_GetTalentValue(hero, NPC_TALENT_2H)+percent);
PrintScreen("Trening: posługiwanie się bronią jedno- i dwuręczną", -1,10,"FONT_OLD_20_WHITE.TGA",2);
B_SetFightSkill(hero,NPC_TALENT_2H,percent);
}
else
{
PrintScreen("Trening: posługiwanie się bronią jednoręczną", -1,10,"FONT_OLD_20_WHITE.TGA",2);
};
B_SetFightSkill(hero,talent,percent);
return TRUE;
};
if(talent == NPC_TALENT_2H)
{
Npc_SetTalentValue(hero, NPC_TALENT_2H, Npc_GetTalentValue(hero, NPC_TALENT_2H)+percent);
if(Npc_GetTalentValue(hero,NPC_TALENT_2H) >= (Npc_GetTalentValue(hero,NPC_TALENT_1H) +30))
{
Npc_SetTalentValue(hero, NPC_TALENT_1H, Npc_GetTalentValue(hero, NPC_TALENT_1H)+percent);
B_SetFightSkill(hero,NPC_TALENT_1H,percent);
PrintScreen ("Trening: posługiwanie się bronią dwu- i jednoręczną", -1,10,"FONT_OLD_20_WHITE.TGA",2);
}
else
{
PrintScreen ("Trening: posługiwanie się bronią dwuręczną", -1,10,"FONT_OLD_20_WHITE.TGA",2);
};
B_SetFightSkill(hero,talent,percent);
return TRUE;
};
if(talent == NPC_TALENT_BOW)
{
Npc_SetTalentValue(hero, NPC_TALENT_BOW, Npc_GetTalentValue(hero, NPC_TALENT_BOW)+percent);
if(Npc_GetTalentValue(hero,NPC_TALENT_BOW) >= (Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) +30))
{
Npc_SetTalentValue(hero, NPC_TALENT_CROSSBOW, Npc_GetTalentValue(hero, NPC_TALENT_CROSSBOW)+percent);
PrintScreen ("Trening: posługiwanie się łukiem i kuszą", -1,10,"FONT_OLD_20_WHITE.TGA",2);
B_SetFightSkill(hero,NPC_TALENT_CROSSBOW,percent);
}
else
{
PrintScreen ("Trening: posługiwanie się łukiem", -1,10,"FONT_OLD_20_WHITE.TGA",2);
};
B_SetFightSkill(hero,talent,percent);
return TRUE;
};
if(talent == NPC_TALENT_CROSSBOW)
{
Npc_SetTalentValue(hero, NPC_TALENT_CROSSBOW, Npc_GetTalentValue(hero, NPC_TALENT_CROSSBOW)+percent);
if(Npc_GetTalentValue(hero,NPC_TALENT_CROSSBOW) >= (Npc_GetTalentValue(hero,NPC_TALENT_BOW) +30))
{
Npc_SetTalentValue(hero, NPC_TALENT_BOW, Npc_GetTalentValue(hero, NPC_TALENT_BOW)+percent);
B_SetFightSkill(hero,NPC_TALENT_BOW,percent);
PrintScreen ("Trening: posługiwanie się kuszą i łukiem", -1,10,"FONT_OLD_20_WHITE.TGA",2);
}
else
{
PrintScreen ("Trening: posługiwanie się kuszą", -1,10,"FONT_OLD_20_WHITE.TGA",2);
};
B_SetFightSkill(hero,talent,percent);
return TRUE;
};
}; Npc_SetTalentValue(self, NPC_TALENT_1H,10);
Learned_1H = 90;
Npc_SetTalentValue(self, NPC_TALENT_2H,10);
Learned_2H = 90;
// **************************************************
// TRAIN 1H - NOTR
// **************************************************
instance Cord_Training_NotRCombat(C_Info)
{
npc = SLD_709_Cord;
condition = Cord_Training_NotRCombat_Condition;
information = Cord_Training_NotRCombat_Info;
important = 0;
permanent = 1;
description = "Naucz mnie walczyć bronią jednoręczną";
};
func int Cord_Training_NotRCombat_Condition()
{
if (Npc_KnowsInfo(hero,SLD_709_Cord_TRAINOFFER))
{
return 1;
};
};
func void Cord_Training_NotRCombat_Info()
{
Info_ClearChoices(Cord_Training_NotRCombat);
Info_AddChoice(Cord_Training_NotRCombat,"Wróć",Cord_Training_NotRCombat_BACK);
Info_AddChoice(Cord_Training_NotRCombat,B_BuildLearnString("Broń jednoręczna +5 (20 bryłek za każdy 1 PN)",B_GetLearnCostTalent(other,NPC_TALENT_1H,5),0),Cord_Training_NotRCombat_1H_5);
};
func void Cord_Training_NotRCombat_1H_5()
{
if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 100) && (Npc_HasItems(other,itminugget) >= 400)
{
PrintScreen ("Ale Ty już osiągnąłeś 100% tej umiejętności!", -1,-1,"font_old_20_white.tga",3);
Info_ClearChoices(Cord_Training_NotRCombat);
Info_AddChoice(Cord_Training_NotRCombat,Dialog_Back,Cord_Training_NotRCombat_Back);
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 90) && (Npc_HasItems(other,itminugget) >= 400)
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_1H,5,100);
B_GiveInvItems(other,self,itminugget,400);
Info_ClearChoices(Cord_Training_NotRCombat);
Info_AddChoice(Cord_Training_NotRCombat,Dialog_Back,Cord_Training_NotRCombat_Back);
Info_AddChoice(Cord_Training_NotRCombat,B_BuildLearnString("Broń jednoręczna +5 (20 bryłek za każdy 1 PN)",B_GetLearnCostTalent(other,NPC_TALENT_1H,5),0),Cord_Training_NotRCombat_1H_5);
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 60) && (Npc_HasItems(other,itminugget) >= 300)
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_1H,5,100);
B_GiveInvItems(other,self,itminugget,300);
Info_ClearChoices(Cord_Training_NotRCombat);
Info_AddChoice(Cord_Training_NotRCombat,Dialog_Back,Cord_Training_NotRCombat_Back);
Info_AddChoice(Cord_Training_NotRCombat,B_BuildLearnString("Broń jednoręczna +5 (20 bryłek za każdy 1 PN)",B_GetLearnCostTalent(other,NPC_TALENT_1H,5),0),Cord_Training_NotRCombat_1H_5);
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 30) && (Npc_HasItems(other,itminugget) >= 200)
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_1H,5,100);
B_GiveInvItems(other,self,itminugget,200);
Info_ClearChoices(Cord_Training_NotRCombat);
Info_AddChoice(Cord_Training_NotRCombat,Dialog_Back,Cord_Training_NotRCombat_Back);
Info_AddChoice(Cord_Training_NotRCombat,B_BuildLearnString("Broń jednoręczna +5 (20 bryłek za każdy 1 PN)",B_GetLearnCostTalent(other,NPC_TALENT_1H,5),0),Cord_Training_NotRCombat_1H_5);
}
else if(Npc_GetTalentValue(hero,NPC_TALENT_1H) >= 0) && (Npc_HasItems(other,itminugget) >= 100)
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_1H,5,100);
B_GiveInvItems(other,self,itminugget,100);
Info_ClearChoices(Cord_Training_NotRCombat);
Info_AddChoice(Cord_Training_NotRCombat,Dialog_Back,Cord_Training_NotRCombat_Back);
Info_AddChoice(Cord_Training_NotRCombat,B_BuildLearnString("Broń jednoręczna +5 (20 bryłek za każdy 1 PN)",B_GetLearnCostTalent(other,NPC_TALENT_1H,5),0),Cord_Training_NotRCombat_1H_5);
}
else
{
AI_Output (self,other,"DIA_Cord_TRAIN_2h_NoOre_01_00"); //Wróć, gdy będziesz miał wystarczająco dużo rudy.
};
};
func void Cord_Training_NotRCombat_BACK()
{
Info_ClearChoices(Cord_Training_NotRCombat);
};
Mam dość nietypowy problem. W 3 rozdziale muszę znaleźć pieczęć ojca Ashtona w kapliczce na cmentarzu. Problem polega na tym, że nie mogę znaleźć dźwigni, która by ten ołtarz otworzyła. Patrząc po gameplayach, powinna to być lampa po prawej, ale próbuję do niej podejść od każdego kąta i nie mogę wejść w interakcję. Nawet używając plugina vobLocator widzę, że ikonka przełącznika jest prześwitująca, jakby przełącznik był za ścianą. Jakiś patch coś zepsuł czy może ja coś robię nie tak?