====== Freeze Globe Spell - Code References ======
===== Java Classes =====
* [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/mechanics/spells/FreezeGlobe.java|FreezeGlobe.java]] - Main implementation class
===== Class Implementation Details =====
package com.nyrds.pixeldungeon.mechanics.spells;
import com.nyrds.platform.audio.Sample;
import com.watabou.pixeldungeon.Assets;
import com.watabou.pixeldungeon.Dungeon;
import com.watabou.pixeldungeon.actors.Actor;
import com.watabou.pixeldungeon.actors.Char;
import com.watabou.pixeldungeon.actors.buffs.Buff;
import com.watabou.pixeldungeon.actors.buffs.Frost;
import com.watabou.pixeldungeon.actors.buffs.Slow;
import com.watabou.pixeldungeon.effects.particles.SnowParticle;
import com.watabou.pixeldungeon.mechanics.Ballistica;
import org.jetbrains.annotations.NotNull;
public class FreezeGlobe extends Spell{
FreezeGlobe() {
targetingType = SpellHelper.TARGET_CELL;
magicAffinity = SpellHelper.AFFINITY_ELEMENTAL;
level = 3;
image = 3;
spellCost = 4;
}
@Override
public boolean cast(@NotNull Char chr, int cell){
if(!Dungeon.level.cellValid(cell)) {
return false;
}
boolean triggered = false;
if(Ballistica.cast(chr.getPos(), cell, false, true) == cell) {
Char ch = Actor.findChar( cell );
if (ch != null) {
ch.getSprite().emitter().burst( SnowParticle.FACTORY, 5 );
ch.getSprite().burst( 0xFF99FFFF, 3 );
Buff.affect( ch, Frost.class, Frost.duration( ch ) );
Buff.affect( ch, Slow.class, Slow.duration( ch ) );
Sample.INSTANCE.play( Assets.SND_SHATTER );
triggered = true;
}
if(triggered) {
castCallback(chr);
}
return true;
}
return false;
}
@Override
public String texture(){
return "spellsIcons/elemental.png";
}
}
===== Key Properties =====
* **Targeting Type**: TARGET_CELL (targets a specific cell, not a character)
* **Magic Affinity**: AFFINITY_ELEMENTAL (elemental magic)
* **Spell Level**: 3 (Advanced spell)
* **Image ID**: 3 (sprite index in elemental spells atlas)
* **Spell Cost**: 4 (mana cost to cast)
* **Texture**: spellsIcons/elemental.png
===== Effects Applied =====
* **Frost Buff**: Applies Frost.class with Frost.duration(ch) - freezes target in place
* **Slow Buff**: Applies Slow.class with Slow.duration(ch) - reduces movement speed
* **Visual Effects**:
- Snow particle burst (5 particles)
- Light blue color burst (0xFF99FFFF, 3 particles)
* **Sound Effect**: Assets.SND_SHATTER (shattering sound)
===== Targeting Mechanics =====
* Uses Ballistica.cast() for path validation
* Requires clear line of sight to target cell
* Only affects characters if present on target cell
* Validates cell through Dungeon.level.cellValid()
===== JSON Configuration =====
This entity is implemented in Java, no JSON configuration exists.
===== String Resources =====
Freeze Globe
Freezes the selected character, making it unable to perform any actions for a short period of time.
===== Lua Scripts =====
This entity is implemented in Java, no Lua script exists.
===== Related Entities =====
* [[mr:frost_buff|Frost Buff]] - Status effect that freezes target
* [[mr:slow_buff|Slow Buff]] - Status effect that reduces speed
* [[mr:elemental_magic|Elemental Magic]] - Magic affinity type
* [[mr:spells_overview|Spells Overview]] - List of all spells
===== Usage in Code =====
* Registered in Spell system via SpellFactory
* Cast on cells, affects any character occupying that cell
* Requires line of sight validation via Ballistica
* Part of elemental magic spell family