Dobra,więc napiszę jeszcze raz co zrobiłem.W pliku VisualFxInst.d dodałem :
Spoiler
INSTANCE spellFX_MassDestroy(CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_INIT";
emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
emtrjloopmode_s = "NONE";
emFXCreatedOwnTrj = 0;
};
INSTANCE spellFX_MassDestroy_KEY_INIT(C_ParticleFXEmitKey)
{
visname_S = "MFX_MassDeath_INIT";
};
INSTANCE spellFX_MassDestroy_KEY_INVEST_1 (C_ParticleFXEmitKey)
{
visname_S = "MFX_MassDeath_RIGHTHAND";
emCreateFXID = "spellFX_MassDeath_LEFTHAND";
};
INSTANCE spellFX_MassDestroy_KEY_CAST(C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_MassDeath_EXPLOSION";
pfx_ppsIsLoopingChg = 1;
};
instance spellFX_MassDestroy_EXPLOSION (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_EXPLOSION";
emtrjmode_s = "FIXED";
emTrjOriginNode = "Bip01 L Hand";
emFXCreate_S = "spellFX_MassDeath_GROUND";
};
INSTANCE spellFX_MassDestroy_GROUND (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_CAST";
emTrjOriginNode = "BIP01 R Foot";
emActionCollDyn_S = "CREATEONCE";
emFXCollDyn_S = "spellFX_MassDeath_COLLIDEDYNFX";
emFXCollDynAlign_S = "COLLISIONNORMAL";
emCheckCollision = 1;
LightPresetName = "REDAMBIENCE";
sfxid = "MFX_MassDeath_Cast";
sfxisambient = 1;
};
instance spellFX_MassDestroy_LEFTHAND (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_LEFTHAND";
visAlpha = 1;
emtrjmode_s = "FIXED";
emTrjOriginNode = "Bip01 L Hand";
emFXCreate_S = "FX_EARTHQUAKE";
};
INSTANCE spellFX_MassDestroy_SUB (CFx_Base_Proto) // vorrübergehend, bis er hardcodiert nicht mehr gesucht wird
{
visname_S = "";
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01 HEAD";
};
INSTANCE spellFX_MassDestroy_COLLIDEDYNFX (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_TARGET";
emTrjOriginNode = "BIP01";
emFXCreatedOwnTrj = 1;
emtrjmode_s = "FIXED";
sfxid = "MFX_MassDeath_Target";
};
Skrypt czaru przerobiłem lekko:
Spoiler
const int SPL_Cost_MassDestroy = 40;
const int SPL_Damage_MassDestroy = 175;
instance Spell_MassDestroy(C_Spell_Proto)
{
time_per_mana = 0;
damage_per_level = SPL_Damage_MassDestroy;
targetCollectAlgo = TARGET_COLLECT_NONE;
};
func int Spell_Logic_Massdestroy(var int manaInvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= 40)
{
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};
func void Spell_Cast_Massdestroy()
{
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - 40;
};
self.aivar[AIV_SelectSpell] += 1;
};
Dodałem wpis do Spell_ProcessMana
if (activeSpell == SPL_SUMMON3WARG )
{
return spell_logic_summon3warg (manaInvested);
};
Skrypt runy
Spoiler
instance ItRu_MassDestroy(C_Item)
{
name = "Masowe zniszczenie";
mainflag = ITEM_KAT_RUNE;
flags = ITEM_MISSION;
value = 1500;
visual = "ItRu_MassDeath.3ds";
material = MAT_STONE;
spell = SPL_MassDestroy;
mag_circle = 2;
wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER_RED";
description = "Masowe zniszczenie";
text[0] = NAME_Mag_Circle;
count[0] = mag_circle;
text[1] = NAME_Manakosten;
count[1] = SPL_Cost_MassDestroy;
text[2] = NAME_Dam_Magic;
count[2] = SPL_Damage_MassDestroy;
text[5] = NAME_Value;
count[5] = value;
};
W pliku text pozmieniałem 65 linijki z _reserved_65
TXT SPELLS :
"Masowe zniszczenie",
const string NAME_SPL_MassDestroy = "Masowe zniszczenie";
W constants dopisałem:
const int SPL_MassDestroy = 65;
const string spellFxInstanceNames :
"MassDestroy",
const string spellFxAniLetters :
"MSD",
No i to wszystko(o ile nic nie pominąłem)spowodowało,że:
1)Jest animacja rzucania czaru poprawnie(wcześniej animacja też była jednak miała małą wadę)
2)Teraz zżera poprawną ilość many(40)
3*)Nie zadaje obrażeń.
W jakim pliku trzeba obrażenia "zadeklarować" do tego czaru?Czy po prostu gdzieś się machnąłem/coś pominąłem?