Yup, właśnie sobie w tym grzebię. Jakkolwiek by to nie brzmiało.
Post połączony: 2016-06-05, 22:57
Ta-dam! Jeszcze raz dzięki za pomoc - może ktoś to wstawi do jakiegoś tutoriala? Wstawiam pełen kod zaklęć, które działają tak, jak zaplanowałem:
Pierwsze zaklęcie leczenia paladyna i zaklęcie maga 1-ego kręgu leczy tylko rzucającego
Drugie zaklęcie leczenia paladyna i zaklęcie maga 3-ego kręgu leczy tylko cel
Trzecie zaklęcie leczenia paladyna i zaklęcie maga 5-ego kręgu leczy grupę sojuszników
Czuję się boski.
// ****************
// Alle Heal Spells
// ****************
const int SPL_Cost_PalLightHeal = 15;
const int SPL_Cost_PalMediumHeal = 30;
const int SPL_Cost_PalFullHeal = 70;
const int SPL_Cost_LightHeal = 10;
const int SPL_Cost_MediumHeal = 25;
const int SPL_Cost_FullHeal = 55;
const int SPL_Heal_PalLightHeal = 200;
const int SPL_Heal_PalMediumHeal = 200;
const int SPL_Heal_PalFullHeal = 200;
const int SPL_Heal_LightHeal = 200;
const int SPL_Heal_MediumHeal = 200;
const int SPL_Heal_FullHeal = 200;
// ------ Instanz für alle normalen Heal-Sprüche ------
instance Spell_LightHeal (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_CASTER;
canTurnDuringInvest = 0;
};
instance Spell_MedliumHeal (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_FOCUS;
canTurnDuringInvest = 0;
};
instance Spell_FullHeal (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_NONE;
canTurnDuringInvest = 0;
};
// ------ Instanz für alle Paladin Heal-Sprüche ------
instance Spell_PalLightHeal (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_CASTER;
canTurnDuringInvest = 0;
};
instance Spell_PalMediumHeal (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_FOCUS;
canTurnDuringInvest = 0;
};
instance Spell_PalFullHeal (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_NONE;
canTurnDuringInvest = 0;
};
// ------ SPL_PalLightHeal -------
func int Spell_Logic_PalLightHeal (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_PalLightHeal))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_PalLightHeal)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};
// ------ SPL_PalMediumHeal -------
func int Spell_Logic_PalMediumHeal (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_PalMediumHeal))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_PalMediumHeal)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};
// ------ PalFullHeal -------
func int Spell_Logic_PalFullHeal (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_PalFullHeal))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_PalFullHeal)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};
// ------ SPL_LightHeal -------
func int Spell_Logic_LightHeal (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_LightHeal))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_LightHeal)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};
// ------ SPL_MediumHeal -------
func int Spell_Logic_MediumHeal (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_MediumHeal))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_MediumHeal)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};
// ------ SPL_FullHeal -------
func int Spell_Logic_FullHeal (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_FullHeal))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_FullHeal)
{
return SPL_SENDCAST;
}
else //nicht genug Mana
{
return SPL_SENDSTOP;
};
};
func void Spell_Cast_Heal()
{
if ( Npc_GetActiveSpell(self) == SPL_LightHeal )
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_LightHeal;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_LightHeal;
};
Npc_ChangeAttribute (self,ATR_HITPOINTS, +SPL_Heal_LightHeal);
return;
};
if ( Npc_GetActiveSpell(self) == SPL_MediumHeal )
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_MediumHeal;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_MediumHeal;
};
Npc_ChangeAttribute (other,ATR_HITPOINTS, +SPL_Heal_MediumHeal);
return;
};
if ( Npc_GetActiveSpell(self) == SPL_FullHeal )
|| (other.aivar[AIV_PARTYMEMBER] = TRUE)
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_FullHeal;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_FullHeal;
};
Npc_ChangeAttribute (self,ATR_HITPOINTS, + SPL_Heal_FullHeal);
Npc_ChangeAttribute (other,ATR_HITPOINTS, + SPL_Heal_FullHeal);
return;
};
self.aivar[AIV_SelectSpell] += 1;
};
func void Spell_Cast_PalHeal()
{
if ( Npc_GetActiveSpell(self) == SPL_PalLightHeal )
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_PalLightHeal;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_PalLightHeal;
};
Npc_ChangeAttribute (self,ATR_HITPOINTS, +SPL_Heal_PalLightHeal);
return;
};
if ( Npc_GetActiveSpell(self) == SPL_PalMediumHeal )
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_PalMediumHeal;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_PalMediumHeal;
};
Npc_ChangeAttribute (other,ATR_HITPOINTS, +SPL_Heal_PalMediumHeal);
return;
};
if ( Npc_GetActiveSpell(self) == SPL_PalFullHeal )
{
if (Npc_GetActiveSpellIsScroll(self))
|| (other.aivar[AIV_PARTYMEMBER] = TRUE)
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_PalFullHeal;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_PalFullHeal;
};
Npc_ChangeAttribute (self,ATR_HITPOINTS, +SPL_Heal_PalFullHeal);
Npc_ChangeAttribute (other,ATR_HITPOINTS, +SPL_Heal_PalFullHeal);
return;
};
self.aivar[AIV_SelectSpell] += 1;
};