<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cc-wiki.duckdns.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Antibrain0</id>
	<title>CC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://cc-wiki.duckdns.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Antibrain0"/>
	<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/wiki/Special:Contributions/Antibrain0"/>
	<updated>2026-04-07T16:27:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=157</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=157"/>
		<updated>2024-06-10T06:26:43Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic in Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face Right.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
  init=function(this)&lt;br /&gt;
   this.delta=0&lt;br /&gt;
   this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
   this.show=true&lt;br /&gt;
   this.layer=-1&lt;br /&gt;
  end,&lt;br /&gt;
  update=function(this)&lt;br /&gt;
   this.delta=this.delta*0.75&lt;br /&gt;
   local hit=this.player_here()&lt;br /&gt;
   &lt;br /&gt;
   if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
     hit.spd.x*=0.2&lt;br /&gt;
     hit.spd.y=-3&lt;br /&gt;
    else&lt;br /&gt;
     hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
     hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
    end&lt;br /&gt;
    hit.dash_time=0&lt;br /&gt;
    hit.dash_effect_time=0&lt;br /&gt;
    hit.djump=max_djump&lt;br /&gt;
    this.delta=8&lt;br /&gt;
    psfx&amp;quot;8&amp;quot;&lt;br /&gt;
    this.init_smoke()&lt;br /&gt;
    &lt;br /&gt;
    break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
   end&lt;br /&gt;
  end,&lt;br /&gt;
  draw=function(this)&lt;br /&gt;
   if this.show then&lt;br /&gt;
    local delta=min(flr(this.delta),4)&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
    else&lt;br /&gt;
     spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;br /&gt;
[[Category:Mechanics]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=156</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=156"/>
		<updated>2024-06-10T06:25:28Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic in Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face left.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
  init=function(this)&lt;br /&gt;
   this.delta=0&lt;br /&gt;
   this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
   this.show=true&lt;br /&gt;
   this.layer=-1&lt;br /&gt;
  end,&lt;br /&gt;
  update=function(this)&lt;br /&gt;
   this.delta=this.delta*0.75&lt;br /&gt;
   local hit=this.player_here()&lt;br /&gt;
   &lt;br /&gt;
   if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
     hit.spd.x*=0.2&lt;br /&gt;
     hit.spd.y=-3&lt;br /&gt;
    else&lt;br /&gt;
     hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
     hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
    end&lt;br /&gt;
    hit.dash_time=0&lt;br /&gt;
    hit.dash_effect_time=0&lt;br /&gt;
    hit.djump=max_djump&lt;br /&gt;
    this.delta=8&lt;br /&gt;
    psfx&amp;quot;8&amp;quot;&lt;br /&gt;
    this.init_smoke()&lt;br /&gt;
    &lt;br /&gt;
    break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
   end&lt;br /&gt;
  end,&lt;br /&gt;
  draw=function(this)&lt;br /&gt;
   if this.show then&lt;br /&gt;
    local delta=min(flr(this.delta),4)&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
    else&lt;br /&gt;
     spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;br /&gt;
[[Category:Mechanics]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=155</id>
		<title>Grass</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=155"/>
		<updated>2024-06-10T04:05:07Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Stub]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Ambox|text=This article is a stub. You can help by expanding it!|type=style}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grass is The main character from the mod [[Celawne]], in which the player character is tasked with mowing it all down to complete levels.&lt;br /&gt;
&lt;br /&gt;
Since grass is alive, that makes the player in [[Celawne]] a serial killer, and since grass is the main character, this makes it, by technicality, treason. &lt;br /&gt;
&lt;br /&gt;
[[File:Grass.png|alt=Grass Sprites|thumb|Some grass from Celawne]]&lt;br /&gt;
[[Category:Stub]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=154</id>
		<title>Grass</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=154"/>
		<updated>2024-06-10T02:56:23Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Stub]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Ambox|text=This article is a stub. You can help by expanding it!|type=style}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grass is The main character from the mod [[Celawne]], in which the player character is tasked with mowing it all down to complete levels.&lt;br /&gt;
&lt;br /&gt;
[[File:Grass.png|alt=Grass Sprites|thumb|Some grass from Celawne]]&lt;br /&gt;
[[Category:Stub]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=153</id>
		<title>Grass</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=153"/>
		<updated>2024-06-10T02:56:10Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Stub]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Ambox|text=This article is a stub. You can help by expanding it!|type=style}}&lt;br /&gt;
&lt;br /&gt;
Grass is The main character from the mod [[Celawne]], in which the player character is tasked with mowing it all down to complete levels.&lt;br /&gt;
&lt;br /&gt;
[[File:Grass.png|alt=Grass Sprites|thumb|Some grass from Celawne]]&lt;br /&gt;
[[Category:Stub]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=152</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=152"/>
		<updated>2024-06-10T02:33:12Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic in Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face right.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
  init=function(this)&lt;br /&gt;
   this.delta=0&lt;br /&gt;
   this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
   this.show=true&lt;br /&gt;
   this.layer=-1&lt;br /&gt;
  end,&lt;br /&gt;
  update=function(this)&lt;br /&gt;
   this.delta=this.delta*0.75&lt;br /&gt;
   local hit=this.player_here()&lt;br /&gt;
   &lt;br /&gt;
   if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
     hit.spd.x*=0.2&lt;br /&gt;
     hit.spd.y=-3&lt;br /&gt;
    else&lt;br /&gt;
     hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
     hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
    end&lt;br /&gt;
    hit.dash_time=0&lt;br /&gt;
    hit.dash_effect_time=0&lt;br /&gt;
    hit.djump=max_djump&lt;br /&gt;
    this.delta=8&lt;br /&gt;
    psfx&amp;quot;8&amp;quot;&lt;br /&gt;
    this.init_smoke()&lt;br /&gt;
    &lt;br /&gt;
    break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
   end&lt;br /&gt;
  end,&lt;br /&gt;
  draw=function(this)&lt;br /&gt;
   if this.show then&lt;br /&gt;
    local delta=min(flr(this.delta),4)&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
    else&lt;br /&gt;
     spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;br /&gt;
[[Category:Mechanics]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=151</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=151"/>
		<updated>2024-06-10T02:27:51Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: /* Springs in Vanilla CC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic in Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face right.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
  init=function(this)&lt;br /&gt;
   this.delta=0&lt;br /&gt;
   this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
   this.show=true&lt;br /&gt;
   this.layer=-1&lt;br /&gt;
  end,&lt;br /&gt;
  update=function(this)&lt;br /&gt;
   this.delta=this.delta*0.75&lt;br /&gt;
   local hit=this.player_here()&lt;br /&gt;
   &lt;br /&gt;
   if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
     hit.spd.x*=0.2&lt;br /&gt;
     hit.spd.y=-3&lt;br /&gt;
    else&lt;br /&gt;
     hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
     hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
    end&lt;br /&gt;
    hit.dash_time=0&lt;br /&gt;
    hit.dash_effect_time=0&lt;br /&gt;
    hit.djump=max_djump&lt;br /&gt;
    this.delta=8&lt;br /&gt;
    psfx&amp;quot;8&amp;quot;&lt;br /&gt;
    this.init_smoke()&lt;br /&gt;
    &lt;br /&gt;
    break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
   end&lt;br /&gt;
  end,&lt;br /&gt;
  draw=function(this)&lt;br /&gt;
   if this.show then&lt;br /&gt;
    local delta=min(flr(this.delta),4)&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
    else&lt;br /&gt;
     spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=150</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=150"/>
		<updated>2024-06-10T02:27:27Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic from Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face right.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
  init=function(this)&lt;br /&gt;
   this.delta=0&lt;br /&gt;
   this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
   this.show=true&lt;br /&gt;
   this.layer=-1&lt;br /&gt;
  end,&lt;br /&gt;
  update=function(this)&lt;br /&gt;
   this.delta=this.delta*0.75&lt;br /&gt;
   local hit=this.player_here()&lt;br /&gt;
   &lt;br /&gt;
   if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
     hit.spd.x*=0.2&lt;br /&gt;
     hit.spd.y=-3&lt;br /&gt;
    else&lt;br /&gt;
     hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
     hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
    end&lt;br /&gt;
    hit.dash_time=0&lt;br /&gt;
    hit.dash_effect_time=0&lt;br /&gt;
    hit.djump=max_djump&lt;br /&gt;
    this.delta=8&lt;br /&gt;
    psfx&amp;quot;8&amp;quot;&lt;br /&gt;
    this.init_smoke()&lt;br /&gt;
    &lt;br /&gt;
    break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
   end&lt;br /&gt;
  end,&lt;br /&gt;
  draw=function(this)&lt;br /&gt;
   if this.show then&lt;br /&gt;
    local delta=min(flr(this.delta),4)&lt;br /&gt;
    if this.dir==0 then&lt;br /&gt;
     sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
    else&lt;br /&gt;
     spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=149</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=149"/>
		<updated>2024-06-10T02:19:44Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic from Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face right.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
	init=function(this)&lt;br /&gt;
		this.delta=0&lt;br /&gt;
		this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
		this.show=true&lt;br /&gt;
		this.layer=-1&lt;br /&gt;
	end,&lt;br /&gt;
	update=function(this)&lt;br /&gt;
		this.delta=this.delta*0.75&lt;br /&gt;
		local hit=this.player_here()&lt;br /&gt;
		&lt;br /&gt;
		if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
			if this.dir==0 then&lt;br /&gt;
				hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
				hit.spd.x*=0.2&lt;br /&gt;
				hit.spd.y=-3&lt;br /&gt;
			else&lt;br /&gt;
				hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
				hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
			end&lt;br /&gt;
			hit.dash_time=0&lt;br /&gt;
			hit.dash_effect_time=0&lt;br /&gt;
			hit.djump=max_djump&lt;br /&gt;
			this.delta=8&lt;br /&gt;
			psfx&amp;quot;8&amp;quot;&lt;br /&gt;
			this.init_smoke()&lt;br /&gt;
			&lt;br /&gt;
			break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	draw=function(this)&lt;br /&gt;
		if this.show then&lt;br /&gt;
			local delta=min(flr(this.delta),4)&lt;br /&gt;
			if this.dir==0 then&lt;br /&gt;
				sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
			else&lt;br /&gt;
				spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
			end&lt;br /&gt;
		end						&lt;br /&gt;
&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=148</id>
		<title>Spring</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Spring&amp;diff=148"/>
		<updated>2024-06-10T02:19:16Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: Created page with &amp;quot;== Springs in Vanilla CC ==  Springs are a mechanic from Celeste Classic and a lot of its Mods.  Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one, which will launch madeline upwards.    == Vanilla Internal data ==  Springs give player momentum and move the player a little bit away from them. The player&amp;#039;s Y speed is always set to -3, And its X speed is multiplied by 0.2. Its Y position is also set...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Springs in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
Springs are a mechanic from Celeste Classic and a lot of its Mods.&lt;br /&gt;
&lt;br /&gt;
Springs can be found in several levels in the vanilla game, including 300m and 800m. They can be triggered by landing on one,&lt;br /&gt;
which will launch madeline upwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanilla Internal data ==&lt;br /&gt;
&lt;br /&gt;
Springs give player momentum and move the player a little bit away from them. The player&#039;s Y speed is always set to -3,&lt;br /&gt;
And its X speed is multiplied by 0.2. Its Y position is also set to be 4 Pixels above the spring, before any&lt;br /&gt;
speed is given.&lt;br /&gt;
&lt;br /&gt;
You can see the movement being triggered here:&lt;br /&gt;
&lt;br /&gt;
 hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
 hit.spd.x*=0.2&lt;br /&gt;
 hit.spd.y=-3&lt;br /&gt;
&lt;br /&gt;
Springs also break fall_floor (crumbles) that are below them, to avoid floating springs.&lt;br /&gt;
&lt;br /&gt;
Once hit, springs become inactive for 10 frames, and during this time its sprite is set to sprite 19, showing &lt;br /&gt;
the spring being depressed into the ground. After this time is over, it returns to its previous state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring object code in Vanilla CC ==&lt;br /&gt;
&lt;br /&gt;
 spring = {&lt;br /&gt;
   tile=18,&lt;br /&gt;
   init=function(this)&lt;br /&gt;
     this.hide_in=0&lt;br /&gt;
     this.hide_for=0&lt;br /&gt;
   end,&lt;br /&gt;
   update=function(this)&lt;br /&gt;
     if this.hide_for&amp;gt;0 then&lt;br /&gt;
       this.hide_for-=1&lt;br /&gt;
       if this.hide_for&amp;lt;=0 then&lt;br /&gt;
         this.spr=18&lt;br /&gt;
         this.delay=0&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.spr==18 then&lt;br /&gt;
       local hit = this.collide(player,0,0)&lt;br /&gt;
       if hit ~=nil and hit.spd.y&amp;gt;=0 then&lt;br /&gt;
         this.spr=19&lt;br /&gt;
         hit.y=this.y-4&lt;br /&gt;
         hit.spd.x*=0.2&lt;br /&gt;
         hit.spd.y=-3&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
         this.delay=10&lt;br /&gt;
         init_object(smoke,this.x,this.y)&lt;br /&gt;
         &lt;br /&gt;
         -- breakable below us&lt;br /&gt;
         local below=this.collide(fall_floor,0,1)&lt;br /&gt;
         if below~=nil then&lt;br /&gt;
           break_fall_floor(below)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         psfx(8)&lt;br /&gt;
       end&lt;br /&gt;
     elseif this.delay&amp;gt;0 then&lt;br /&gt;
       this.delay-=1&lt;br /&gt;
       if this.delay&amp;lt;=0 then &lt;br /&gt;
         this.spr=18 &lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     -- begin hiding&lt;br /&gt;
     if this.hide_in&amp;gt;0 then&lt;br /&gt;
       this.hide_in-=1&lt;br /&gt;
       if this.hide_in&amp;lt;=0 then&lt;br /&gt;
         this.hide_for=60&lt;br /&gt;
         this.spr=0&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Springs in EverCore ==&lt;br /&gt;
&lt;br /&gt;
Springs in the EverCore CC Modbase differ slightly. Minus the smaller token size, they also support Left and Right&lt;br /&gt;
directions. When sprite 19 is placed on the map next to a ground tile, Once the cart is run, It will automatically&lt;br /&gt;
stick to that wall. On hit, it will bounce the player in the opposite direction. Vertical facing springs (Placed with sprite 18) &lt;br /&gt;
are still the same as in vanilla&lt;br /&gt;
&lt;br /&gt;
== EverCore Internal data ==&lt;br /&gt;
&lt;br /&gt;
The amount of speed and movement that vertical facing springs give the player is exactly the same as they were in&lt;br /&gt;
Vanilla CC, But with smoother animation, and the ability to place left and right facing springs. A Horizontal spring,&lt;br /&gt;
When placed, Will check in each direction if there is a ground tile or other solid object there. It starts with&lt;br /&gt;
checking LEFT, meaning that if there is a wall or solid object on both sides of the spring, it will face right.&lt;br /&gt;
&lt;br /&gt;
The amount of speed that a horizontal spring gives you is a fixed number, determined by the springs facing direction.&lt;br /&gt;
It will always give you 3 speed in the direction it is facing, and -1.5 y speed. It will also move you 4 pixels away from&lt;br /&gt;
the spring, in its facing direction as well.&lt;br /&gt;
&lt;br /&gt;
The animation of the spring has also changed. Now, The spring has a &amp;quot;Delta&amp;quot; Value, which determines its offset when drawing the sprite.&lt;br /&gt;
On hit, Its &amp;quot;Delta&amp;quot; Value is set to 8, moving it into the ground by 4 pixels. It remains at four pixels down for 2 frames, and it&lt;br /&gt;
slowly returns to its original position after 4 more frames. During this 6 frame window, the spring cannot be hit again.&lt;br /&gt;
The same animation happens to horizontal springs, but they move towards the wall they are stuck to, instead of the ground below.&lt;br /&gt;
&lt;br /&gt;
== Spring object code in EverCore ==&lt;br /&gt;
&lt;br /&gt;
 spring={&lt;br /&gt;
	init=function(this)&lt;br /&gt;
		this.delta=0&lt;br /&gt;
		this.dir=this.spr==18 and 0 or this.is_solid(-1,0) and 1 or -1&lt;br /&gt;
		this.show=true&lt;br /&gt;
		this.layer=-1&lt;br /&gt;
	end,&lt;br /&gt;
	update=function(this)&lt;br /&gt;
		this.delta=this.delta*0.75&lt;br /&gt;
		local hit=this.player_here()&lt;br /&gt;
		&lt;br /&gt;
		if this.show and hit and this.delta&amp;lt;=1 then&lt;br /&gt;
			if this.dir==0 then&lt;br /&gt;
				hit.move(0,this.y-hit.y-4,1)&lt;br /&gt;
				hit.spd.x*=0.2&lt;br /&gt;
				hit.spd.y=-3&lt;br /&gt;
			else&lt;br /&gt;
				hit.move(this.x+this.dir*4-hit.x,0,1)&lt;br /&gt;
				hit.spd=vector(this.dir*3,-1.5)&lt;br /&gt;
			end&lt;br /&gt;
			hit.dash_time=0&lt;br /&gt;
			hit.dash_effect_time=0&lt;br /&gt;
			hit.djump=max_djump&lt;br /&gt;
			this.delta=8&lt;br /&gt;
			psfx&amp;quot;8&amp;quot;&lt;br /&gt;
			this.init_smoke()&lt;br /&gt;
			&lt;br /&gt;
			break_fall_floor(this.check(fall_floor,-this.dir,this.dir==0 and 1 or 0))&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	draw=function(this)&lt;br /&gt;
		if this.show then&lt;br /&gt;
			local delta=min(flr(this.delta),4)&lt;br /&gt;
			if this.dir==0 then&lt;br /&gt;
				sspr(16,8,8,8,this.x,this.y+delta)&lt;br /&gt;
			else&lt;br /&gt;
				spr(19,this.dir==-1 and this.x+delta or this.x,this.y,1-delta/8,1,this.dir==1)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
 end&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the object&#039;s smaller code size, while having more features then its vanilla counterpart.&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Celawne&amp;diff=147</id>
		<title>Celawne</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Celawne&amp;diff=147"/>
		<updated>2024-06-10T01:41:17Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Celawne is the best mod of [[Celeste Classic]] (undisputed). While the levels are identical to those of [[Celeste Classic]], nearly every surface is covered in [[Grass]]. The player can only beat a level after mowing all the grass by dashing into it. [[Strawberry|strawberries]], which are usually the main collectible, are worthless, and will often make fun of the player for collecting them. the new, trendier collectible is double stacked grass blades, which can be created by breaking a [[Crumble block|crumble]] so the grass on it falls onto grass below. This can be done 5 times throughout the game.&lt;br /&gt;
[[Category:Stub]]&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=146</id>
		<title>Grass</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Grass&amp;diff=146"/>
		<updated>2024-06-10T01:39:53Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: Added grass page for Celawne due to my ADHD seeing &amp;quot;Grass&amp;quot; and clicking on it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Grass is The main character from the mod [[Celawne]], in which the player character is tasked with mowing it all down to complete levels.&lt;br /&gt;
&lt;br /&gt;
[[File:Grass.png|alt=Grass Sprites|thumb|Some grass from Celawne]]&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=File:Grass.png&amp;diff=145</id>
		<title>File:Grass.png</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=File:Grass.png&amp;diff=145"/>
		<updated>2024-06-10T01:36:54Z</updated>

		<summary type="html">&lt;p&gt;Antibrain0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some grass sprites from celawne&lt;/div&gt;</summary>
		<author><name>Antibrain0</name></author>
	</entry>
</feed>