public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); SetHealthByDifficulty(1); scoreValue = 100; theme = details.Params[0]; switch (theme) { case 0: default: RequestMetadata("Enemy/Turtle"); break; case 1: // Xmas RequestMetadata("Enemy/TurtleXmas"); break; } SetAnimation(AnimState.Walk); IsFacingLeft = MathF.Rnd.NextBool(); speedX = (IsFacingLeft ? -1 : 1) * DefaultSpeed; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); theme = details.Params[0]; switch (theme) { case 0: default: RequestMetadata("Enemy/LizardFloat"); break; case 1: // Xmas RequestMetadata("Enemy/LizardFloatXmas"); break; } collisionFlags &= ~CollisionFlags.ApplyGravitation; SetHealthByDifficulty(1); scoreValue = 200; SetAnimation(AnimState.Idle); // Spawn copter Copter copter = new Copter(); copter.OnAttach(new ActorInstantiationDetails { Api = api, Params = details.Params }); copter.Parent = this; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); int length = (details.Params[0] > 0 ? details.Params[0] : 8); speed = (details.Params[1] > 0 ? details.Params[1] : 8) * 0.00625f; // "Event" parameter will not be implemented collisionFlags &= ~(CollisionFlags.ApplyGravitation | CollisionFlags.SkipPerPixelCollisions); untouched = false; // Workaround: Some animation have to be loaded for collision detection RequestMetadata("Object/GemGiant"); SetAnimation(AnimState.Idle); renderer.Active = false; parts = new GemPart[length]; for (int i = 0; i < parts.Length; i++) { parts[i] = new GemPart(); parts[i].OnAttach(details); parts[i].Parent = this; parts[i].Transform.Scale = 0.8f; } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); // ToDo: Implement Fade:1|Sine:1 collisionFlags = CollisionFlags.None; RequestMetadata("Common/AmbientSound"); string name; switch (details.Params[0]) { case 0: name = "AmbientWind"; break; case 1: name = "AmbientFire"; break; case 2: name = "AmbientScienceNoise"; break; default: return; } float gain = (details.Params[1] / 255f); sound = PlaySound(name, gain); sound.Looped = true; sound.BeginFadeIn(1f); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); morphType = (MorphType)details.Params[0]; Movable = true; collisionFlags |= CollisionFlags.SkipPerPixelCollisions; RequestMetadata("Object/PowerUpMonitor"); switch (morphType) { case MorphType.Swap2: SetAnimation("Swap2"); break; case MorphType.Swap3: SetAnimation("Swap3"); break; case MorphType.ToBird: SetAnimation("Bird"); break; } for (int i = 0; i < api.Players.Count; i++) { PlayerType?playerType = GetTargetType(api.Players[i].PlayerType); switch (playerType) { case PlayerType.Jazz: PreloadMetadata("Interactive/PlayerJazz"); break; case PlayerType.Spaz: PreloadMetadata("Interactive/PlayerSpaz"); break; case PlayerType.Lori: PreloadMetadata("Interactive/PlayerLori"); break; } } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); endText = details.Params[1]; canHurtPlayer = false; isInvulnerable = true; canBeFrozen = false; maxHealth = health = int.MaxValue; scoreValue = 0; lastHealth = health; collisionFlags |= CollisionFlags.IsSolidObject; stepSize = 0.3f; switch (api.Difficulty) { case GameDifficulty.Easy: stepSize *= 1.3f; break; case GameDifficulty.Hard: stepSize *= 0.7f; break; } RequestMetadata("Boss/Queen"); SetAnimation(AnimState.Idle); // Invisible block above the queen block = new InvisibleBlock(); block.OnAttach(new ActorInstantiationDetails { Api = api }); api.AddActor(block); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); SetHealthByDifficulty(2); scoreValue = 200; RequestMetadata("Enemy/TurtleTube"); SetAnimation(AnimState.Idle); Vector3 pos = Transform.Pos; if (api.WaterLevel + WaterDifference <= pos.Y) { // Water is above the enemy, it's floating on the water pos.Y = api.WaterLevel + WaterDifference; Transform.Pos = pos; collisionFlags &= ~CollisionFlags.ApplyGravitation; onWater = true; } else { // Water is below the enemy, apply gravitation and pause the animation renderer.AnimPaused = true; } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); Vector3 pos = Transform.Pos; pos.Y -= 6f; Transform.Pos = pos; SetHealthByDifficulty(3); scoreValue = 200; ushort theme = details.Params[0]; switch (theme) { case 0: default: RequestMetadata("Enemy/Doggy"); attackSpeed = 3.2f; break; case 1: // TSF Cat RequestMetadata("Enemy/Cat"); attackSpeed = 3.8f; break; } SetAnimation(AnimState.Walk); IsFacingLeft = MathF.Rnd.NextBool(); speedX = (IsFacingLeft ? -1 : 1) * 1f; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); Vector3 pos = Transform.Pos; pos.Z += 20f; Transform.Pos = pos; ushort theme = details.Params[0]; RequestMetadata("Object/Moth"); switch (theme) { default: case 0: SetAnimation("Pink"); break; case 1: SetAnimation("Gray"); break; case 2: SetAnimation("Green"); break; case 3: SetAnimation("Purple"); break; } renderer.AnimPaused = true; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); gemType = (ushort)(details.Params[0] & 0x3); RequestMetadata("Collectible/Gems"); switch (gemType) { case 0: // Red (+1) scoreValue = 100; SetAnimation("GemRed"); break; case 1: // Green (+5) scoreValue = 500; SetAnimation("GemGreen"); break; case 2: // Blue (+10) scoreValue = 1000; SetAnimation("GemBlue"); break; case 3: // Purple scoreValue = 100; SetAnimation("GemPurple"); break; } SetFacingDirection(); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); ushort coinType = details.Params[0]; RequestMetadata("Collectible/Coins"); switch (coinType) { case 0: // Silver coinValue = 1; scoreValue = 500; SetAnimation("CoinSilver"); break; case 1: // Gold coinValue = 5; scoreValue = 1000; SetAnimation("CoinGold"); break; } SetFacingDirection(); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); PlayerType playerType = (PlayerType)details.Params[0]; IsFacingLeft = (details.Params[1] != 0); switch (playerType) { case PlayerType.Jazz: RequestMetadata("Interactive/PlayerJazz"); break; case PlayerType.Spaz: RequestMetadata("Interactive/PlayerSpaz"); break; case PlayerType.Lori: RequestMetadata("Interactive/PlayerLori"); break; } SetAnimation("Corpse"); collisionFlags = CollisionFlags.None; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); IsFacingLeft = (details.Params[0] != 0); collisionFlags &= ~CollisionFlags.ApplyGravitation; RequestMetadata("Weapon/Toaster"); SetAnimation("Fire"); const float baseSpeed = 1.2f; if (IsFacingLeft) { speedX = -1f * (baseSpeed + MathF.Rnd.NextFloat(0f, 0.2f)); } else { speedX = +1f * (baseSpeed + MathF.Rnd.NextFloat(0f, 0.2f)); } speedY += MathF.Rnd.NextFloat(-0.5f, 0.5f); timeLeft = 60; LightEmitter light = AddComponent <LightEmitter>(); light.Intensity = 0.85f; light.Brightness = 0.4f; light.RadiusNear = 0f; light.RadiusFar = 30f; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); ushort theme = details.Params[0]; switch (theme) { case 0: default: // Normal RequestMetadata("Enemy/TurtleShell"); break; case 1: // Xmas RequestMetadata("Enemy/TurtleShellXmas"); break; case 2: // Tough (Boss) RequestMetadata("Boss/TurtleShellTough"); break; } SetAnimation(AnimState.Idle); canHurtPlayer = false; friction = api.Gravity * 0.05f; elasticity = 0.5f; health = 8; PlaySound("Fly"); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); originPos = Transform.Pos; length = details.Params[2]; speed = (details.Params[1] > short.MaxValue ? -(ushort.MaxValue - details.Params[2]) : details.Params[2]) * 0.78f; ushort sync = details.Params[0]; isSwing = details.Params[3] != 0; shade = details.Params[4] != 0; phase = (BaseCycleFrames - (float)(Time.GameTimer.TotalMilliseconds % BaseCycleFrames - sync * 175) * speed) % BaseCycleFrames; isInvulnerable = true; collisionFlags = CollisionFlags.CollideWithOtherActors; canBeFrozen = false; RequestMetadata("Object/SpikeBall"); SetAnimation("SpikeBall"); pieces = new ChainPiece[length]; for (int i = 0; i < length; i++) { pieces[i] = new ChainPiece(api, originPos + new Vector3(0f, 0f, 4f), i); api.AddActor(pieces[i]); } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); RequestMetadata("Boss/Tweedle"); SetAnimation(AnimState.Idle); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); scoreValue = 200; PlayerType player = (api.Players.Count == 0 ? PlayerType.Jazz : api.Players[0].PlayerType); if (player == PlayerType.Spaz) { RequestMetadata("Collectible/FastFireSpaz"); } else if (player == PlayerType.Lori) { RequestMetadata("Collectible/FastFireLori"); } else { RequestMetadata("Collectible/FastFireJazz"); } SetAnimation("FastFire"); SetFacingDirection(); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); shieldType = (Player.ShieldType)details.Params[0]; Movable = true; collisionFlags |= CollisionFlags.SkipPerPixelCollisions; RequestMetadata("Object/PowerUpMonitor"); switch (shieldType) { case Player.ShieldType.Fire: SetAnimation("ShieldFire"); break; case Player.ShieldType.Water: SetAnimation("ShieldWater"); break; case Player.ShieldType.Laser: SetAnimation("ShieldLaser"); break; case Player.ShieldType.Lightning: SetAnimation("ShieldLightning"); break; default: SetAnimation("Empty"); break; } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); originPos = Transform.Pos; type = (PlatformType)details.Params[0]; length = details.Params[3]; speed = (details.Params[2] > short.MaxValue ? -(ushort.MaxValue - details.Params[2]) : details.Params[2]) * 0.78f; ushort sync = details.Params[1]; isSwing = details.Params[4] != 0; phase = (BaseCycleFrames - (float)(Time.GameTimer.TotalMilliseconds % BaseCycleFrames - sync * 175) * speed) % BaseCycleFrames; collisionFlags = CollisionFlags.CollideWithOtherActors | CollisionFlags.IsSolidObject; IsOneWay = true; canBeFrozen = false; RequestMetadata("MovingPlatform/" + type.ToString("G")); SetAnimation("Platform"); pieces = new ChainPiece[length]; for (int i = 0; i < length; i++) { pieces[i] = new ChainPiece(api, originPos + new Vector3(0f, 0f, 4f), type, i); api.AddActor(pieces[i]); } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); ushort intensity = details.Params[0]; ushort brightness = details.Params[1]; ushort radiusNear1 = details.Params[2]; ushort radiusNear2 = details.Params[3]; ushort radiusFar = details.Params[4]; ushort speed = details.Params[5]; ushort sync = details.Params[6]; collisionFlags = CollisionFlags.None; this.radiusNear1 = radiusNear1; this.radiusNear2 = radiusNear2; this.radiusFar = radiusFar; this.speed = 0.6f * speed; phase = (BaseCycleFrames - ((float)(Time.GameTimer.TotalMilliseconds % BaseCycleFrames) + sync * 175)) % BaseCycleFrames; light = AddComponent <LightEmitter>(); light.Intensity = (intensity / 255f); light.Brightness = (brightness / 255f); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); weaponType = (WeaponType)details.Params[0]; Movable = true; collisionFlags |= CollisionFlags.SkipPerPixelCollisions; RequestMetadata("Object/PowerUpMonitor"); switch (weaponType) { case WeaponType.Blaster: PlayerType player = (api.Players.Count == 0 ? PlayerType.Jazz : api.Players[0].PlayerType); if (player == PlayerType.Spaz) { SetAnimation("BlasterSpaz"); } else if (player == PlayerType.Lori) { SetAnimation("BlasterLori"); } else { SetAnimation("BlasterJazz"); } break; default: SetAnimation(weaponType.ToString("G")); break; } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); ushort theme = details.Params[0]; short x = unchecked ((short)(details.Params[1])); short y = unchecked ((short)(details.Params[2])); Vector3 pos = Transform.Pos; pos.X += x; pos.Y += y; pos.Z += 20; Transform.Pos = pos; canBeFrozen = false; collisionFlags &= ~CollisionFlags.ApplyGravitation; //collisionFlags |= CollisionFlags.IsSolidObject; switch (theme) { case 0: RequestMetadata("Pole/Carrotus"); break; case 1: RequestMetadata("Pole/Diamondus"); break; case 2: RequestMetadata("Pole/DiamondusTree"); break; case 3: RequestMetadata("Pole/Jungle"); break; case 4: RequestMetadata("Pole/Psych"); break; } SetAnimation("Pole"); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); elasticity = 0.6f; collisionFlags |= CollisionFlags.SkipPerPixelCollisions; Vector3 pos = Transform.Pos; phase = ((pos.X / 32) + (pos.Y / 32)) * 2f; if ((flags & (ActorInstantiationFlags.IsCreatedFromEventMap | ActorInstantiationFlags.IsFromGenerator)) != 0) { untouched = true; collisionFlags &= ~CollisionFlags.ApplyGravitation; startingY = pos.Y; } else { untouched = false; collisionFlags |= CollisionFlags.ApplyGravitation; timeLeft = 90f * Time.FramesPerSecond; } RequestMetadata("Object/Collectible"); if ((details.Flags & ActorInstantiationFlags.Illuminated) != 0) { Illuminate(); } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); collisionFlags = CollisionFlags.CollideWithTileset | CollisionFlags.CollideWithOtherActors | CollisionFlags.ApplyGravitation; canBeFrozen = false; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); playerType = (PlayerType)details.Params[0]; index = details.Params[1]; switch (playerType) { case PlayerType.Jazz: RequestMetadata("Interactive/PlayerJazz"); break; case PlayerType.Spaz: RequestMetadata("Interactive/PlayerSpaz"); break; case PlayerType.Lori: RequestMetadata("Interactive/PlayerLori"); break; } SetAnimation(AnimState.Fall); //collisionFlags = CollisionFlags.CollideWithTileset | CollisionFlags.CollideWithSolidObjects | CollisionFlags.CollideWithOtherActors | CollisionFlags.ApplyGravitation | CollisionFlags.IsSolidObject; collisionFlags = CollisionFlags.CollideWithOtherActors; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); endText = details.Params[1]; canBeFrozen = false; SetHealthByDifficulty(100); scoreValue = 3000; collisionFlags = CollisionFlags.CollideWithOtherActors; RequestMetadata("Boss/Bolly"); SetAnimation(AnimState.Idle); // Spawn bottom bottom = new Bottom(); bottom.OnAttach(new ActorInstantiationDetails { Api = api }); bottom.Parent = this; // Spawn turret turret = new Turret(); turret.OnAttach(new ActorInstantiationDetails { Api = api }); turret.Parent = this; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); IsFacingLeft = (details.Params[0] != 0); collisionFlags &= ~CollisionFlags.ApplyGravitation; canBeFrozen = false; health = int.MaxValue; speedX = (IsFacingLeft ? -5f : 5f); speedY = 5f; RequestMetadata("Boss/Devan"); SetAnimation((AnimState)675); OnUpdateHitbox(); LightEmitter light = AddComponent <LightEmitter>(); light.Intensity = 0.85f; light.Brightness = 0.4f; light.RadiusNear = 0f; light.RadiusFar = 30f; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); LastHitDirection parentLastHitDir = (LastHitDirection)details.Params[0]; SetHealthByDifficulty(1); scoreValue = 100; RequestMetadata("Enemy/Sucker"); maxHealth = 4; SetAnimation(AnimState.Walk); if (parentLastHitDir != LastHitDirection.None) { IsFacingLeft = (parentLastHitDir == LastHitDirection.Left); health = 1; collisionFlags &= ~CollisionFlags.ApplyGravitation; SetTransition((AnimState)1073741824, false, delegate { speedX = 0; SetAnimation(AnimState.Walk); collisionFlags |= CollisionFlags.ApplyGravitation; }); if (parentLastHitDir == LastHitDirection.Left || parentLastHitDir == LastHitDirection.Right) { speedX = 3 * (parentLastHitDir == LastHitDirection.Left ? -1 : 1); } PlaySound("Deflate"); } else { health = 4; } }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); theme = details.Params[0]; endText = details.Params[1]; SetHealthByDifficulty(120); scoreValue = 3000; collisionFlags = CollisionFlags.CollideWithTileset | CollisionFlags.CollideWithOtherActors; originPos = details.Pos; switch (theme) { case 0: default: RequestMetadata("Boss/Bilsy"); break; case 1: // Xmas RequestMetadata("Boss/BilsyXmas"); break; } SetAnimation(AnimState.Idle); renderer.Active = false; }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); SetAnimation("Stopwatch"); SetFacingDirection(); }