public override void TileProc(int aX, int aY, ref bool refContinue) { NWField f = Field; Step(aX, aY); if (f.IsBarrier(aX, aY)) { refContinue = false; } else { NWCreature c = (NWCreature)f.FindCreature(aX, aY); if (c != null && c.HasAffect(EffectID.eid_Death)) { RaceID race = c.Entry.Race; if (race == RaceID.crDefault || race == RaceID.crHuman) { if (c.IsPlayer) { c.Death(BaseLocale.GetStr(RS.rs_KilledByDeathRay), null); } else { c.Death(BaseLocale.Format(RS.rs_TheXIsDestroyed, new object[] { c.Name }), null); } } } } }
public override void TileProc(int aX, int aY, ref bool refContinue) { NWField f = Field; NWTile tile = (NWTile)f.GetTile(aX, aY); Step(aX, aY); if (f.IsBarrier(aX, aY)) { if (tile.ForeBase == PlaceID.pid_Tree) { tile.Foreground = PlaceID.pid_DeadTree; string nm = BaseLocale.GetStr(StaticData.dbPlaces[5].NameRS); GlobalVars.nwrWin.ShowText(Creature, BaseLocale.Format(RS.rs_TheXIsMelted, new object[] { nm })); } refContinue = false; } else { NWCreature c = (NWCreature)f.FindCreature(aX, aY); if (c != null && c.HasAffect(EffectID.eid_Flaying)) { c.ApplyDamage(RandomHelper.GetBoundedRnd(13, 36), DamageKind.dkRadiation, null, BaseLocale.Format(RS.rs_TheXIsMelted, new object[] { c.Name })); } } }
public override void TileProc(int aX, int aY, ref bool refContinue) { NWField f = Field; NWTile tile = (NWTile)f.GetTile(aX, aY); Step(aX, aY); if (f.IsBarrier(aX, aY)) { if (tile.ForeBase == PlaceID.pid_Tree) { tile.Foreground = PlaceID.pid_DeadTree; string tmp = BaseLocale.GetStr(StaticData.dbPlaces[5].NameRS); GlobalVars.nwrWin.ShowText(Creature, BaseLocale.Format(RS.rs_TheXIsFrozen, new object[] { tmp })); } refContinue = false; } else { NWCreature c = (NWCreature)f.FindCreature(aX, aY); if (c != null && c.HasAffect(EffectID.eid_Ice)) { c.AddEffect(EffectID.eid_Ice, ItemState.is_Normal, EffectAction.ea_Persistent, false, BaseLocale.GetStr(RS.rs_YouAreFrozen)); Effect e = c.Effects.FindEffectByID(EffectID.eid_Ice); if (e != null && e.Magnitude >= 30) { string tmp; if (c.IsPlayer) { tmp = BaseLocale.GetStr(RS.rs_EncasedInIce); } else { tmp = BaseLocale.Format(RS.rs_TheXIsFrozen, new object[] { c.Name }); } c.Death(tmp, null); } } } }
public override void Execute() { NWCreature self = (NWCreature)Self; ExtPoint playerPt = self.Space.Player.Location; if (MathHelper.Distance(playerPt, self.Location) == 1) { int idx = RandomHelper.GetBoundedRnd(RS.rs_Diary_First, RS.rs_Diary_Last); string s = BaseLocale.Format(RS.rs_RavenSaid, BaseLocale.GetStr(idx)); GlobalVars.nwrWin.ShowText(self, s, new LogFeatures(LogFeatures.lfDialog)); self.State = CreatureState.Dead; IsComplete = true; } else { ExtPoint next = self.GetStep(playerPt); if (!next.IsEmpty) { Brain.StepTo(next.X, next.Y); } } }
private void OnSkillsSelect(object Sender, MouseButton Button, LBItem Item) { if (Button == MouseButton.mbRight) { int idx = (int)Item.Data; switch (fMode) { case SWM_SKILLS: { SkillID sk = (SkillID)(idx); if (sk != SkillID.Sk_Alchemy) { if (sk != SkillID.Sk_Ironworking) { if (sk != SkillID.Sk_Spellcasting) { Hide(); GlobalVars.nwrGame.DoPlayerAction(CreatureAction.caSkillUse, idx); } else { Mode = SWM_SPELLS; } } else { string ts = GlobalVars.nwrGame.Player.Craft.CheckSmithyTools(); if (ts.CompareTo("") != 0) { GlobalVars.nwrWin.ShowText(GlobalVars.nwrWin, BaseLocale.Format(RS.rs_NoInstruments, new object[] { ts })); } else { Hide(); GlobalVars.nwrWin.ShowSmithyWin(); } } } else { Hide(); GlobalVars.nwrWin.ShowAlchemyWin(); } break; } case SWM_SPELLS: Hide(); GlobalVars.nwrGame.DoPlayerAction(CreatureAction.caSpellUse, idx); break; case SWM_TILES: Hide(); GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_TileID, idx); GlobalVars.nwrWin.UseTarget(); break; case SWM_LANDS: Hide(); GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_Land, idx); GlobalVars.nwrWin.UseTarget(); break; case SWM_SCROLLS: Hide(); GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_ScrollID, idx); GlobalVars.nwrWin.UseTarget(); break; case SWM_GODS: Hide(); GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_GodID, idx); GlobalVars.nwrWin.UseTarget(); break; } } }