public override void DoTurn() { try { base.DoTurn(); fSatiety -= 1; NWField map = CurrentField; if (Hallucinations) { PrepareHallucinations(); } // processing Skidbladnir Effect ef = Effects.FindEffectByID(EffectID.eid_Sail); if (ef != null) { Item ship = FindItem("Skidbladnir"); EntityList members = ship.Contents; for (int i = members.Count - 1; i >= 0; i--) { NWCreature cr = (NWCreature)members.GetItem(i); cr.ResetStamina(); } int rest; do { rest = 0; for (int i = members.Count - 1; i >= 0; i--) { NWCreature cr = (NWCreature)members.GetItem(i); if (cr.State != CreatureState.Dead) { Effect ef1 = cr.Effects.FindEffectByID(EffectID.eid_Sail); if (ef1 == null) { throw new Exception("gluk!"); } cr.DoTurn(); if (cr.Stamina >= Speed) { rest++; } } } } while (rest != 0); } if (!Prowling) { ApplyLightEffect(); if (!GlobalVars.Debug_Divinity) { if (fSatiety == 200) { GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_YouHungry)); } else { if (fSatiety <= 150 && (int)fSatiety % 50 == 0) { UseEffect(EffectID.eid_Swoon, null, InvokeMode.im_ItSelf, null); } else { if (fSatiety <= 0) { Death(BaseLocale.GetStr(RS.rs_Starved), null); return; } } } /*if (super.LayerID == GlobalVars.Layer_Muspelheim) { * // TODO: requires additional processing * }*/ if (LayerID == GlobalVars.Layer_Niflheim && GetAbility(AbilityID.Resist_Cold) == 0) { int num3 = RandomHelper.GetRandom(2); if (num3 != 0) { if (num3 == 1) { GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_YouNumbedByColdOfNiflheim)); Death(BaseLocale.GetStr(RS.rs_FrozeToDeath), null); } } else { GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_NiflheimFrostDeath)); Death(BaseLocale.GetStr(RS.rs_TurnedToIce), null); } return; } if (LayerID == GlobalVars.Layer_Midgard && Field.X == 1 && Field.Y == 6 && GetAbility(AbilityID.Resist_Heat) == 0) { int num4 = RandomHelper.GetRandom(2); if (num4 != 0) { if (num4 == 1) { GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_YouBurntByFlamesOfBifrost)); } } else { GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_BifrostFlameDeath)); } Death(BaseLocale.GetStr(RS.rs_ConsumedByFire), null); return; } } if (!GlobalVars.Debug_DevMode && LayerID == GlobalVars.Layer_Vanaheim && map.Creatures.Count == 1) { Morality = 0; TransferTo(GlobalVars.Layer_Midgard, 2, 2, -1, -1, StaticData.MapArea, true, false); GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_VanaheimIsEmpty), new LogFeatures(LogFeatures.lfDialog)); } if (Morality <= -100 && LayerID != GlobalVars.Layer_Niflheim) { TransferTo(GlobalVars.Layer_Niflheim, 1, 1, -1, -1, StaticData.MapArea, true, false); GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_PlayerIsUnworthy), new LogFeatures(LogFeatures.lfDialog)); } } } catch (Exception ex) { Logger.Write("Player.doTurn(): " + ex.Message); } }