Added henchman rental

Many areas, items, and creatures were adjusted for balance and aesthetics.
This commit is contained in:
EpicValor
2023-08-24 15:20:50 -05:00
parent d6cb8322b9
commit 07f4ebed49
2373 changed files with 518431 additions and 7256 deletions

View File

@@ -0,0 +1,79 @@
#include "hench_i0_heal"
void main()
{
SetCommandable(TRUE);
int bPolymorphed = GetHasEffect(EFFECT_TYPE_POLYMORPH);
InitializeItemSpells(HenchDetermineClassToUse(), bPolymorphed, HENCH_INIT_ALL_SPELLS);
// check if run from master shout
if (GetLocalInt(OBJECT_SELF, henchHealCountStr) == -1)
{
DeleteLocalInt(OBJECT_SELF, henchHealCountStr);
if(HenchTalentCureCondition(GetMaster()))
{
DelayCommand(2.0, VoiceCanDo());
return;
}
if(HenchTalentHeal(GetMaster(), bPolymorphed ? HENCH_HAS_POLYMORPH_EFFECT : 0, HENCH_HEAL_FORCE | HENCH_HEAL_NO_POTIONS))
{
DelayCommand(2.0, VoiceCanDo());
return;
}
DelayCommand(2.5, VoiceCannotDo());
return;
}
object oHealTarget = GetLocalObject(OBJECT_SELF, "Henchman_Spell_Target");
int curHealCount = GetLocalInt(OBJECT_SELF, henchHealCountStr);
if (!GetIsObjectValid(oHealTarget))
{
InitializeAllyTargets(FALSE);
if (curHealCount == 0)
{
ReportUnseenAllies();
}
}
else if (!GetObjectSeen(oHealTarget))
{
SpeakString(sHenchCantSeeTarget + GetName(oHealTarget));
DeleteLocalInt(OBJECT_SELF, henchHealCountStr);
SetLocalObject(OBJECT_SELF, "Henchman_Spell_Target", OBJECT_INVALID);
return;
}
if(HenchTalentCureCondition(oHealTarget))
{
SetLocalInt(OBJECT_SELF, henchHealCountStr, curHealCount + 1);
return;
}
if (GetIsObjectValid(oHealTarget))
{
if(HenchTalentHeal(oHealTarget, bPolymorphed ? HENCH_HAS_POLYMORPH_EFFECT : 0, HENCH_HEAL_FORCE | HENCH_HEAL_NO_POTIONS))
{
SetLocalInt(OBJECT_SELF, henchHealCountStr, curHealCount + 1);
return;
}
}
else
{
if (HenchTalentHealAll(bPolymorphed ? HENCH_HAS_POLYMORPH_EFFECT : 0, HENCH_HEAL_FORCE | HENCH_HEAL_NO_POTIONS))
{
SetLocalInt(OBJECT_SELF, henchHealCountStr, curHealCount + 1);
return;
}
}
if (curHealCount == 0)
{
// didn't find any heal spells
PlayVoiceChat(VOICE_CHAT_CUSS);
}
else
{
PlayVoiceChat(VOICE_CHAT_TASKCOMPLETE);
}
DeleteLocalInt(OBJECT_SELF, henchHealCountStr);
SetLocalObject(OBJECT_SELF, "Henchman_Spell_Target", OBJECT_INVALID);
}