Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DSTFilm.cs
Go to the documentation of this file.
3
4namespace Terraria.Cinematics;
5
6public class DSTFilm : Film
7{
8 private NPC _deerclops;
9
11
13
14 private Item _oldItem;
15
16 public DSTFilm()
17 {
19 }
20
21 public override void OnBegin()
22 {
24 Main.hideUI = true;
25 base.OnBegin();
26 }
27
28 public override void OnEnd()
29 {
30 ClearScene();
31 Main.hideUI = false;
32 base.OnEnd();
33 }
34
50
51 private void PrepareScene()
52 {
53 Main.dayTime = true;
54 Main.time = 13500.0;
55 Main.time = 43638.0;
56 Main.windSpeedCurrent = (Main.windSpeedTarget = 0.36799997f);
57 Main.windCounter = 2011;
58 Main.cloudAlpha = 0f;
59 Main.raining = true;
60 Main.rainTime = 3600;
61 Main.maxRaining = (Main.oldMaxRaining = (Main.cloudAlpha = 0.9f));
62 Main.raining = true;
63 Main.maxRaining = (Main.oldMaxRaining = (Main.cloudAlpha = 0.6f));
64 Main.raining = true;
65 Main.maxRaining = (Main.oldMaxRaining = (Main.cloudAlpha = 0.6f));
66 _startPoint = new Point(4050, 488).ToWorldCoordinates();
67 _startPoint -= new Vector2(1280f, 0f);
68 }
69
70 private void ClearScene()
71 {
72 if (_deerclops != null)
73 {
74 _deerclops.active = false;
75 }
76 if (_chester != null)
77 {
78 _chester.active = false;
79 }
80 Main.LocalPlayer.isControlledByFilm = false;
81 }
82
84 {
85 _oldItem = Main.LocalPlayer.armor[3];
86 Item item = new Item();
87 item.SetDefaults(5113);
88 Main.LocalPlayer.armor[3] = item;
89 }
90
92 {
93 Main.LocalPlayer.armor[3] = _oldItem;
94 }
95
97 {
99 _deerclops.immortal = true;
100 _deerclops.dontTakeDamage = true;
101 _deerclops.takenDamageMultiplier = 0f;
102 _deerclops.immune[255] = 100000;
103 _deerclops.immune[Main.myPlayer] = 100000;
104 _deerclops.ai[0] = -1f;
105 _deerclops.velocity.Y = 4f;
106 _deerclops.velocity.X = 6f;
107 _deerclops.position.X -= 24f;
108 _deerclops.direction = (_deerclops.spriteDirection = 1);
109 }
110
111 private NPC PlaceNPCOnGround(int type, Vector2 position)
112 {
113 FindFloorAt(position, out var x, out var y);
114 if (type == 668)
115 {
116 y -= 240;
117 }
118 int start = 100;
119 int num = NPC.NewNPC(new EntitySource_Film(), x, y, type, start);
120 return Main.npc[num];
121 }
122
124 {
125 FindFloorAt(_startPoint + new Vector2(110f, 0f), out var x, out var y);
126 y -= 240;
127 int num = Projectile.NewProjectile(null, x, y, 0f, 0f, 960, 0, 0f, Main.myPlayer, -1f);
128 _chester = Main.projectile[num];
129 _chester.velocity.Y = 4f;
130 _chester.velocity.X = 6f;
131 }
132
134 {
135 Player localPlayer = Main.LocalPlayer;
136 localPlayer.isControlledByFilm = true;
137 localPlayer.controlRight = true;
138 FindFloorAt(_startPoint + new Vector2(150f, 0f), out var x, out var y);
139 localPlayer.BottomLeft = new Vector2(x, y);
140 localPlayer.velocity.X = 6f;
141 }
142
144 {
145 Main.LocalPlayer.controlRight = false;
146 _chester.ai[0] = -2f;
147 }
148
150 {
151 Main.LocalPlayer.ChangeDir(-1);
152 _chester.velocity = new Vector2(-0.1f, 0f);
153 _chester.spriteDirection = (_chester.direction = -1);
154 _deerclops.ai[0] = 1f;
155 _deerclops.ai[1] = 0f;
157 }
158
160 {
161 Main.LocalPlayer.controlJump = true;
162 _chester.velocity.Y = -11.4f;
163 _deerclops.ai[0] = 1f;
164 _deerclops.ai[1] = 0f;
166 }
167
168 private static void FindFloorAt(Vector2 position, out int x, out int y)
169 {
170 x = (int)position.X;
171 y = (int)position.Y;
172 int i = x / 16;
173 int j;
174 for (j = y / 16; !WorldGen.SolidTile(i, j); j++)
175 {
176 }
177 y = j * 16;
178 }
179}
void DeerclopsAttack(FrameEventData evt)
Definition DSTFilm.cs:159
override void OnBegin()
Definition DSTFilm.cs:21
void ControlPlayer(FrameEventData evt)
Definition DSTFilm.cs:133
void CreateDeerclops(FrameEventData evt)
Definition DSTFilm.cs:96
static void FindFloorAt(Vector2 position, out int x, out int y)
Definition DSTFilm.cs:168
void EquipDSTShaderItem(FrameEventData evt)
Definition DSTFilm.cs:83
override void OnEnd()
Definition DSTFilm.cs:28
void RemoveDSTShaderItem(FrameEventData evt)
Definition DSTFilm.cs:91
void TurnPlayerToTheLeft(FrameEventData evt)
Definition DSTFilm.cs:149
void CreateChester(FrameEventData evt)
Definition DSTFilm.cs:123
void StopBeforeCliff(FrameEventData evt)
Definition DSTFilm.cs:143
NPC PlaceNPCOnGround(int type, Vector2 position)
Definition DSTFilm.cs:111
void AppendKeyFrames(params FrameEvent[] frameEvents)
Definition Film.cs:90
void AppendEmptySequence(int duration)
Definition Film.cs:80
static int myPlayer
Definition Main.cs:1801
static Projectile[] projectile
Definition Main.cs:1691
static NPC[] npc
Definition Main.cs:1685
static Player LocalPlayer
Definition Main.cs:2829
int[] immune
Definition NPC.cs:441
void TargetClosest(bool faceTarget=true)
Definition NPC.cs:69934
float[] ai
Definition NPC.cs:447
static int NewNPC(IEntitySource source, int X, int Y, int Type, int Start=0, float ai0=0f, float ai1=0f, float ai2=0f, float ai3=0f, int Target=255)
Definition NPC.cs:77654
static int NewProjectile(IEntitySource spawnSource, Vector2 position, Vector2 velocity, int Type, int Damage, float KnockBack, int Owner=-1, float ai0=0f, float ai1=0f, float ai2=0f)
static bool SolidTile(Tile testTile)