public static Entity Wall(bool mIsBroken = false) { var result = new Entity(Tile) {Layer = TDLLayers.Wall}; var cRender = TDLComponentFactory.Render(@"environment\wall\purple", "walltiles", "single"); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.Break); var cRecalculateSprites = new TDCRecalculateSprites(TDLTags.Wall, TDLRecalculations.RecalculateWallSprite); result.AddTags(TDLTags.Solid, TDLTags.Wall, TDLTags.HitByWeapon, TDLTags.GroundPathmapObstacle); result.AddComponents(cRender, cRecalculateSprites); if (mIsBroken) { TDLMethods.AttachBrokenOverlay(cRender); result.AddComponents(cHitByWeapon); } return result; }
public static Entity RoachEgg() { var result = new Entity(Tile) {Layer = TDLLayers.Roach, UpdateOrder = TDLOrders.Roach}; var cRender = TDLComponentFactory.Render(@"monster\roachegg", "roachtiles", "n", true); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.Kill); var cEgg = new TDCEgg(cRender, 4); var cPathmapper = new TDCPathmapper(Instance, TDLPathmaps.SideBad); result.AddTags(TDLTags.Solid, TDLTags.SideBad, TDLTags.HitByWeapon, TDLTags.RequiredKill); result.AddComponents(cRender, cHitByWeapon, cEgg, cPathmapper); return result; }
public static Entity RoachQueen(int mDirection = 0, int mSpawnTurns = 30) { var result = new Entity(Tile) {Layer = TDLLayers.Roach, UpdateOrder = TDLOrders.Roach}; var cRender = TDLComponentFactory.Render(@"monster\roachqueen", "roachtiles", "n", true); var cDirection = new TDCDirection(mDirection); var cTarget = new TDCTarget(TDLTags.MonsterTargetTags); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.Kill); var cMovement = new TDCMovement(TDCMovement.MovementType.BeelineNormal, TDLTags.GroundAllowedTags, TDLTags.GroundObstacleTags, TDLTags.GroundExceptionTags) {IsReverse = true}; var cMovementTargetAI = new TDCMovementTargetAI(Instance, cMovement, cTarget, cDirection, TDLPathmaps.SideGood); var cRenderDirectionAI = new TDCRenderDirectionAI(cRender, cDirection, "roachtiles"); var cPathmapper = new TDCPathmapper(Instance, TDLPathmaps.SideBad); var cRoachQueen = new TDCRoachQueen(false, mSpawnTurns); result.AddTags(TDLTags.Solid, TDLTags.SideBad, TDLTags.HitByWeapon, TDLTags.RequiredKill, TDLTags.BoosterUser, TDLTags.WeightLow, TDLTags.AffectedByBrain); result.AddComponents(cRender, cDirection, cTarget, cHitByWeapon, cMovementTargetAI, cMovement, cRenderDirectionAI, cPathmapper, cRoachQueen); return result; }
public static Entity Player(int mDirection = 0) { var result = new Entity(Tile) {Layer = TDLLayers.Roach, UpdateOrder = TDLOrders.Player}; var outline1 = new TDCRenderSpriteOutline("humanoidtiles", @"humanoid\body\yellow", "n"); var outline2 = new TDCRenderSpriteOutline("humanoidtiles", @"humanoid\hands\pink", "n"); var outline3 = new TDCRenderSpriteOutline("humanoidtiles", @"humanoid\head\pink", "n"); var cRender = new TDCRender(outline1, outline2, outline3) {IsLerped = true}; var cDirection = new TDCDirection(mDirection); var cTarget = new TDCTarget(); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.Kill); var cMovement = new TDCMovement(TDCMovement.MovementType.Direct, TDLTags.GroundAllowedTags, TDLTags.GroundObstacleTags, TDLTags.GroundExceptionTags); var cRenderDirectionAI = new TDCRenderDirectionAI(cRender, cDirection, "humanoidtiles"); var cWielder = new TDCWielder(cMovement, cDirection); var cPathmapper = new TDCPathmapper(Instance, TDLPathmaps.SideGood); var cPlayer = new TDCPlayer(Game, cMovement, cDirection, cWielder); var cRoomSwitch = new TDCRoomSwitch(Game, cMovement); var cWielderRenderAI = new TDCWielderRenderAI(cWielder, cRender, cRenderDirectionAI); result.AddTags(TDLTags.Solid, TDLTags.Humanoid, TDLTags.SideGood, TDLTags.HitByWeapon, TDLTags.Player, TDLTags.TunnelUser, TDLTags.WeightLow, TDLTags.BoosterUser); result.AddComponents(cRender, cDirection, cTarget, cHitByWeapon, cPlayer, cMovement, cRenderDirectionAI, cWielder, cPathmapper, cRoomSwitch, cWielderRenderAI); cWielder.SetWeapon(ReallyBigSword()); /*cMovement.OnMovementFail += () => { // This is only to prevent wall bump sounds if using a tunnel or a booster var x = cMovement.TargetX; var y = cMovement.TargetY; if (result.Field.HasEntityByTag(result.X, result.Y, TDLTags.Tunnel)) return; if (result.Field.HasEntityByTag(result.X, result.Y, TDLTags.Booster)) return; if (result.Field.HasEntityByTag(x, y, TDLTags.Wall)) TDLSounds.Play("SoundWallBump"); else if (result.Field.HasEntityByTag(x, y, TDLTags.Pit)) TDLSounds.Play("SoundPitBump"); };*/ return result; }
public static Entity Orb(List<int> mTargetIDs = default(List<int>), List<int> mTargetEffects = default(List<int>), bool mIsBroken = false, int mHealth = 2) { var result = new Entity(Tile) {Layer = TDLLayers.Orb}; var cRender = TDLComponentFactory.Render(@"elements\orb", "orbtiles", "on"); var cIDCaller = new TDCIDCaller(mTargetIDs, mTargetEffects); var cOrb = new TDCOrb(mIsBroken, mHealth, cRender, cIDCaller); var cHitByWeapon = new TDCHitByWeapon(cOrb.Struck); if (mIsBroken) TDLMethods.AttachCrackedOverlay(cRender, mHealth >= 2 ? 0 : 1); result.AddTags(TDLTags.Solid, TDLTags.HitByWeapon, TDLTags.GroundPathmapObstacle); result.AddComponents(cRender, cHitByWeapon, cIDCaller, cOrb); return result; }
public static Entity Guard(int mDirection = 0) { var result = new Entity(Tile) {Layer = TDLLayers.Roach, UpdateOrder = TDLOrders.Guard}; var outline1 = new TDCRenderSpriteOutline("humanoidtiles", @"humanoid\body\red", "n"); var outline2 = new TDCRenderSpriteOutline("humanoidtiles", @"humanoid\hands\pink", "n"); var outline3 = new TDCRenderSpriteOutline("humanoidtiles", @"humanoid\head\pink", "n"); var cRender = new TDCRender(outline1, outline2, outline3) {IsLerped = true}; var cDirection = new TDCDirection(mDirection); var cTarget = new TDCTarget(TDLTags.MonsterTargetTags); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.Kill); var cMovement = new TDCMovement(TDCMovement.MovementType.FlexibleNormal, TDLTags.GroundAllowedTags, TDLTags.GroundObstacleTags, TDLTags.GroundExceptionTags); var cRenderDirectionAI = new TDCRenderDirectionAI(cRender, cDirection, "humanoidtiles"); var cWielder = new TDCWielder(cMovement, cDirection); var cWielderTargetAI = new TDCWielderTargetAI(cTarget, cMovement, cDirection, cWielder); var cMovementTargetAI = new TDCMovementTargetAI(Instance, cMovement, cTarget, cDirection, TDLPathmaps.SideGood, false, true); var cPathmapper = new TDCPathmapper(Instance, TDLPathmaps.SideBad); var cWielderRenderAI = new TDCWielderRenderAI(cWielder, cRender, cRenderDirectionAI); result.AddTags(TDLTags.Solid, TDLTags.Humanoid, TDLTags.SideBad, TDLTags.HitByWeapon, TDLTags.WeightLow, TDLTags.BoosterUser, TDLTags.RequiredKill, TDLTags.Guard); result.AddComponents(cRender, cDirection, cTarget, cHitByWeapon, cWielderTargetAI, cMovementTargetAI, cMovement, cRenderDirectionAI, cWielder, cPathmapper, cWielderRenderAI); cWielder.SetWeapon(WoodenSword()); return result; }
public static Entity Door(bool mIsBroken = false, bool mIsOff = false, List<int> mIDs = default(List<int>)) { var result = new Entity(Tile) {Layer = TDLLayers.Door}; var cRender = TDLComponentFactory.Render(@"environment\door\yellow\closed", "doortiles", "single"); var cSwitch = TDLComponentFactory.SwitchTexture(cRender, mIsOff, @"environment\door\yellow\open", @"environment\door\yellow\closed"); cSwitch.OnlyOffTags.Add(TDLTags.DoorOpen); cSwitch.OnlyOnTags.AddRange(new[] {TDLTags.DoorClosed, TDLTags.Solid, TDLTags.GroundPathmapObstacle}); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.BreakIfOff); var cID = TDLComponentFactory.ID(mIDs); var cRecalculateSprites = new TDCRecalculateSprites(TDLTags.DoorClosed, TDLRecalculations.RecalculateDoorSprite, cID.SameIDsCondition); var cIDSwitchAI = new TDCIDSwitchAI(cSwitch, cID); var cSwitchRecalculateTagAI = new TDCSwitchRecalculateTagAI(cSwitch, cRecalculateSprites, TDLTags.DoorOpen, TDLTags.DoorClosed); var cDoor = new TDCDoor(TDCDoor.DoorType.Yellow, mIsOff, Game, cSwitch, cRecalculateSprites); result.AddTags(TDLTags.Door, TDLTags.HitByWeapon); result.AddComponents(cRender, cID, cSwitch, cSwitchRecalculateTagAI, cRecalculateSprites, cIDSwitchAI, cDoor); if (mIsBroken) { result.AddComponents(cHitByWeapon); TDLMethods.AttachBrokenOverlay(cRender); } return result; }
public static Entity Brain() { var result = new Entity(Tile) {Layer = TDLLayers.Roach, UpdateOrder = TDLOrders.Roach}; var cRender = TDLComponentFactory.Render(@"monster\brain", true); var cHitByWeapon = new TDCHitByWeapon(TDCHitByWeapon.HitActions.KillBrain); var cPathmapper = new TDCPathmapper(Instance, TDLPathmaps.SideBad); result.AddTags(TDLTags.Solid, TDLTags.SideBad, TDLTags.HitByWeapon, TDLTags.RequiredKill, TDLTags.WeightLow, TDLTags.Brain); result.AddComponents(cRender, cHitByWeapon, cPathmapper); result.Field.TurnActions[TDLTurnActions.StartBrainCheck] += () => TDLMethods.CheckForBrains(result.Field); return result; }