public SpellEntry(int spell_idx, SpellClass _spellClass, sbyte _spellLevel, int _fixedRange, int _perLvlRange, int _fixedDuration, byte _perLvlDuration, byte f6, SpellTargets _targets, DamageOnSave _damageOnSave, SaveVerseType _saveVerse, Affects _affectId, SpellWhen _whenCast, int _castingDelay, int _priority, byte fe, byte ff) { spellClass = _spellClass; spellLevel = _spellLevel; fixedRange = _fixedRange; perLvlRange = _perLvlRange; fixedDuration = _fixedDuration; perLvlDuration = _perLvlDuration; field_6 = f6; targetType = _targets; damageOnSave = _damageOnSave; saveVerse = _saveVerse; affect_id = _affectId; whenCast = _whenCast; castingDelay = _castingDelay; priority = _priority; field_E = fe; field_F = ff; spellIdx = spell_idx; }
public SpellWhen whenCast; //seg600:37E7 unk_19AF7 #endregion Fields #region Constructors public SpellEntry(int spell_idx, SpellClass _spellClass, sbyte _spellLevel, int _fixedRange, int _perLvlRange, int _fixedDuration, byte _perLvlDuration, byte f6, SpellTargets _targets, DamageOnSave _damageOnSave, SaveVerseType _saveVerse, Affects _affectId, SpellWhen _whenCast, int _castingDelay, int _priority, byte fe, byte ff) { spellClass = _spellClass; spellLevel = _spellLevel; fixedRange = _fixedRange; perLvlRange = _perLvlRange; fixedDuration = _fixedDuration; perLvlDuration = _perLvlDuration; field_6 = f6; targetType = _targets; damageOnSave = _damageOnSave; saveVerse = _saveVerse; affect_id = _affectId; whenCast = _whenCast; castingDelay = _castingDelay; priority = _priority; field_E = fe; field_F = ff; spellIdx = spell_idx; }
internal static void damage_person(bool change_damage, DamageOnSave arg_2, int damage, Player player) { string text; gbl.damage = damage; CheckAffectsEffect(player, CheckType.PreDamage); if (change_damage == true) { if (arg_2 == DamageOnSave.Zero) { gbl.damage = 0; } else if (arg_2 == DamageOnSave.Half) { gbl.damage /= 2; } } else { CheckAffectsEffect(player, CheckType.FireShield); } if (gbl.damage > 0) { if (gbl.damage != 1) { text = "takes " + gbl.damage.ToString() + " points of damage "; } else { text = "takes 1 point of damage "; } int mask = (int)gbl.damage_flags & 0xf7; if (mask == 0x01) { text += "from Fire"; } else if (mask == 0x02) { text += "from Cold"; } else if (mask == 0x04) { text += "from Electricity"; } else if (mask == 0x10) { text += "from Acid"; } if ((gbl.damage_flags & DamageType.Magic) == gbl.damage_flags) { text += "from Magic"; } ovr025.MagicAttackDisplay(text, false, player); ovr025.damage_player(gbl.damage, player); if (gbl.game_state == GameState.Combat) { TryLooseSpell(player); } if (player.in_combat == false) { text = "Goes Down"; if (player.health_status == Status.dying) { text = text + ", and is Dying"; } if (player.health_status == Status.dead || player.health_status == Status.stoned || player.health_status == Status.gone ) { text = "is killed"; } ovr025.DisplayPlayerStatusString(false, gbl.textYCol + 1, text, player); if (gbl.game_state != GameState.Combat) { seg041.GameDelay(); } else { RemoveCombatAffects(player); CheckAffectsEffect(player, CheckType.Death); if (player.in_combat == false) { ovr033.CombatantKilled(player); } else { seg041.GameDelay(); } } } ovr025.ClearPlayerTextArea(); } }
internal static void is_unaffected(string text, bool saved, DamageOnSave can_save, bool call_affect_table, int data, ushort time, Affects affect_id, Player target) { gbl.current_affect = affect_id; CheckAffectsEffect(target, CheckType.Type_9); if (gbl.current_affect == 0 || (saved == true && can_save == DamageOnSave.Zero)) { ovr025.DisplayPlayerStatusString(true, 10, "is Unaffected", target); } else { Affect found_affect; if (ovr025.FindAffect(out found_affect, affect_id, target) == true && found_affect.minutes > 0) { remove_affect(found_affect, affect_id, target); } add_affect(call_affect_table, data, time, affect_id, target); if (text.Length != 0) { ovr025.MagicAttackDisplay(text, true, target); ovr025.ClearPlayerTextArea(); } } }