Otóż usłyszałem od
@Sawik 'a, że przy pomocy Ikarusa i Lego można zmienić obrażenia broni. Zauważyłem, że bronie bliskodystansowe wymagające zręczności skalują się z posiadaną siłą, a kusze wymagające siły skalują obrażenia ze zręcznością. Więc "poradził" mi znaleźć tutorial Bogdana Zwei o manipulowaniu obrażeniami i chyba znalazłem poprawny temat(
http://themodders.org/index.php?topic=23935.0). Robiłem to opcją kopiuj->wklej. No i problem jest taki, że bronie(testowałem na mieczach)dalej się skalują z siłą, chociaż powinny skalować ze zręcznością. Skrypt:
func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg) {
// Trafienia krytyczne
var int CritChances; CritChances = r_Max(100);
if (CritChances<=oth.hitchance[1])
{
dmg = dmg*2;
};
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.
var c_npc slf; slf = _^(attackerptr);
var c_npc oth; oth = _^(victimPtr);
var C_Item EQWeapon; EQWeapon = Npc_GetReadiedWeapon(oth);
if (Hlp_IsItem(EQWeapon, ItMw_Addon_BanditTrader))
||(Hlp_IsItem(EQWeapon, ItMw_Addon_Betty))
||(Hlp_IsItem(EQWeapon, ItMw_1h_Vlk_Sword))
||(Hlp_IsItem(EQWeapon, ItMw_Rapier))
||(Hlp_IsItem(EQWeapon, ItMw_Meisterdegen))
{
if (Npc_IsPlayer (hero))
{
dmg = oth.attribute[ATR_DEXTERITY];
};
};
return dmg;
};
func void _DMG_OnDmg() {
EDI = DMG_OnDmg(EBP, MEM_ReadInt(MEM_ReadInt(ESP+644)+8), EDI);
};
func void InitDamage() {
const int dmg = 0;
if (dmg) { return; };
HookEngineF(6736583/*0x66CAC7*/, 5, _DMG_OnDmg);
dmg = 1;
};
Funkcję zainicjowałem. Jest tutaj coś do prostej poprawy czy lepiej po prostu zmienić wymóg atrybutu do założenia konkretnych broni?