@ -171,7 +171,8 @@ namespace reasoncode{
SEED_GROWTH ,
TREE_BURN ,
DROUGHT ,
PETRIFIED
PETRIFIED ,
RADIOACTIVE
} ;
}
@ -358,6 +359,7 @@ class WEATHER_POWER{
bool appliesSpeed = false ; //If true, will apply speed on use.
bool appliesHide = false ; //If true, will apply hiding on use.
bool appliesPetrification = false ; //Applies three turns of petrification on use.
bool appliesRadioactive = false ; //Radioactive removes all trees and seeds.
float pctDmg = 0 ; //
bool dealsPctDmg = false ; //If set to true, uses pctDmg and deals a % health value instead.
WEATHER_POWER ( std : : string name , std : : string desc , Animation * icon , Animation * effect , int dmg , int dmgRoll , int range , Pixel bgcol , Pixel textcol , int effectTime , ParticleEffect * parteff ) {
@ -571,6 +573,8 @@ public:
ParticleEffect * GLARE_EFF = new ParticleEffect ( { 0 , 0 } , { WIDTH , HEIGHT } , { 0 , 0 } , { WIDTH , HEIGHT } , { 4 , 4 } , { 12 , 12 } , { - 20 , - 6 } , { 0 , - 20 } , Pixel ( 130 , 245 , 2 , 130 ) , Pixel ( 250 , 246 , 2 , 210 ) , 0 , Pixel ( 255 , 255 , 255 , 64 ) ) ;
ParticleEffect * PETRIFY_EFF = new ParticleEffect ( { 0 , 0 } , { 64 , 64 } , { 0 , 0 } , { 64 , 64 } , { 2 , 2 } , { 4 , 4 } , { - 1 , - 3 } , { 1 , - 8 } , Pixel ( 166 , 147 , 143 , 200 ) , Pixel ( 199 , 194 , 193 , 210 ) , 30 , Pixel ( 199 , 199 , 52 , 0 ) ) ;
ParticleEffect * MEGAFANG_EFF = new ParticleEffect ( { 0 , 0 } , { 64 , 64 } , { 0 , 0 } , { 64 , 64 } , { 1 , 1 } , { 3 , 3 } , { - 5 , - 5 } , { 5 , 5 } , Pixel ( 255 , 255 , 255 , 200 ) , Pixel ( 255 , 255 , 255 , 210 ) , 40 , Pixel ( 70 , 158 , 62 , 0 ) ) ;
ParticleEffect * END_OF_THE_CENTURY_BEAM_EFF = new ParticleEffect ( { 0 , 0 } , { WIDTH , HEIGHT } , { WIDTH , HEIGHT } , { 64 , 64 } , { 8 , 8 } , { 20 , 20 } , { - 4 , 10 } , { 4 , 35 } , Pixel ( 0 , 0 , 0 , 75 ) , Pixel ( 255 , 255 , 255 , 210 ) , 120 , Pixel ( 255 , 255 , 255 , 96 ) ) ;
ParticleEffect * RADIOACTIVE_TRANSMISSION_EFF = new ParticleEffect ( { 0 , 0 } , { WIDTH , HEIGHT } , { WIDTH , HEIGHT } , { 64 , 64 } , { 5 , 5 } , { 10 , 10 } , { 0 , 0 } , { 0 , 0 } , Pixel ( 70 , 189 , 23 , 196 ) , Pixel ( 189 , 189 , 23 , 210 ) , 250 , Pixel ( 0 , 255 , 0 , 128 ) ) ;
WEATHER_POWER * HAILSTORM = new WEATHER_POWER ( " Hailstorm " , " Causes a flurry of hard cold rocks to be unleashed in target area. 60+1d30 " , POWER_HAILSTORM_ANIMATION , POWER_HAILSTORM_ANIMATION , 60 , 30 , 160 , Pixel ( 72 , 160 , 212 , 255 ) , Pixel ( 93 , 161 , 163 , 255 ) , 120 , HAILSTORM_EFF ) ;
WEATHER_POWER * HURRICANE = new WEATHER_POWER ( " Hurricane " , " Causes heavy winds, scattering seeds, heavy rain. 20+1d10 " , POWER_HURRICANE_ANIMATION , POWER_HURRICANE_ANIMATION , 20 , 10 , 200 , Pixel ( 99 , 148 , 132 , 255 ) , Pixel ( 121 , 132 , 140 , 255 ) , 120 , HURRICANE_EFF ) ;
WEATHER_POWER * METEOR_RAIN = new WEATHER_POWER ( " Meteor Rain " , " Causes fiery space rocks to fall on target area. 50+1d50 " , POWER_METEOR_SHOWER_ANIMATION , POWER_METEOR_SHOWER_ANIMATION , 50 , 50 , 96 , Pixel ( 96 , 86 , 153 , 255 ) , Pixel ( 170 , 103 , 201 , 255 ) , 120 , METEOR_STORM_EFF ) ;
@ -602,6 +606,8 @@ public:
WEATHER_POWER * GLARE = new WEATHER_POWER ( " Glare " , " " , POWER_SOLARFLARE_ANIMATION , POWER_SOLARFLARE_ANIMATION , 1 , 10 , 255 , Pixel ( 176 , 53 , 37 , 255 ) , Pixel ( 217 , 98 , 0 , 255 ) , 120 , GLARE_EFF ) ;
WEATHER_POWER * PETRIFY = new WEATHER_POWER ( " Petrify " , " " , POWER_SOLARFLARE_ANIMATION , POWER_SOLARFLARE_ANIMATION , 1 , 10 , 255 , Pixel ( 176 , 53 , 37 , 255 ) , Pixel ( 217 , 98 , 0 , 255 ) , 120 , PETRIFY_EFF ) ;
WEATHER_POWER * MEGA_FANG = new WEATHER_POWER ( " Mega Fang " , " " , POWER_SOLARFLARE_ANIMATION , POWER_SOLARFLARE_ANIMATION , 1 , 10 , 255 , Pixel ( 176 , 53 , 37 , 255 ) , Pixel ( 217 , 98 , 0 , 255 ) , 120 , MEGAFANG_EFF ) ;
WEATHER_POWER * END_OF_THE_CENTURY_BEAM = new WEATHER_POWER ( " End of the Century Beam " , " " , POWER_SOLARFLARE_ANIMATION , POWER_SOLARFLARE_ANIMATION , 1 , 10 , 255 , Pixel ( 176 , 53 , 37 , 255 ) , Pixel ( 217 , 98 , 0 , 255 ) , 160 , END_OF_THE_CENTURY_BEAM_EFF ) ;
WEATHER_POWER * RADIOACTIVE_TRANSMISSION = new WEATHER_POWER ( " Radioactive Transmission " , " " , POWER_SOLARFLARE_ANIMATION , POWER_SOLARFLARE_ANIMATION , 1 , 10 , 255 , Pixel ( 176 , 53 , 37 , 255 ) , Pixel ( 217 , 98 , 0 , 255 ) , 160 , RADIOACTIVE_TRANSMISSION_EFF ) ;
bool IN_BATTLE_ENCOUNTER = false ;
int BATTLE_ENTRY_TIMER = 0 ;
@ -998,6 +1004,8 @@ public:
PETRIFY - > appliesPetrification = true ;
MEGA_FANG - > dealsPctDmg = true ;
MEGA_FANG - > pctDmg = 0.49 ;
END_OF_THE_CENTURY_BEAM - > dealsPctDmg = true ;
END_OF_THE_CENTURY_BEAM - > pctDmg = 0.96 ;
LIGHT_STORM - > lowPriority = true ;
@ -1061,6 +1069,20 @@ public:
MOVESET_Y_Y . push_back ( DROUGHT ) ;
MOVESET_Y_Y . push_back ( HAILSTORM ) ;
MOVESET_A_A . push_back ( END_OF_THE_CENTURY_BEAM ) ;
MOVESET_A_A . push_back ( LIGHT_STORM ) ;
MOVESET_A_A . push_back ( RADIOACTIVE_TRANSMISSION ) ;
MOVESET_A_A . push_back ( LIGHT_STORM ) ;
MOVESET_A_A . push_back ( METEOR_RAIN ) ;
MOVESET_A_A . push_back ( LIGHT_STORM ) ;
MOVESET_A_A . push_back ( LIGHT_STORM ) ;
MOVESET_A_A . push_back ( AVALANCHE ) ;
MOVESET_A_A . push_back ( FIRESTORM ) ;
MOVESET_A_A . push_back ( AVALANCHE ) ;
MOVESET_A_A . push_back ( GUST ) ;
MOVESET_A_A . push_back ( GUST ) ;
MOVESET_A_A . push_back ( GUST ) ;
COLLECTED_ITEMS . push_back ( { 20 , 5 } ) ;
COLLECTED_ITEMS . push_back ( { 20 , 6 } ) ;
COLLECTED_ITEMS . push_back ( { 19 , 5 } ) ;
@ -2257,6 +2279,14 @@ public:
PETRIFY_TURNS = 3 ;
}
}
if ( ref - > appliesRadioactive ) {
if ( BATTLE_CURRENT_TURN_ENTITY = = - 1 ) {
//Not implemented for the player.
} else {
SEEDS . clear ( ) ;
TREES . clear ( ) ;
}
}
if ( EFFECT_TIMER > ref - > effectTime ) {
EFFECT_TIMER = 0 ;
clearPixelEffect ( ) ;
@ -2341,6 +2371,13 @@ public:
}
CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > lastSlowVal = CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > speed ;
CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > lastHiddenVal = CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > hidden ;
if ( CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > name . compare ( " A.A " ) = = 0 ) {
if ( CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > fixedTurnOrderInd = = CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > moveSet . size ( ) ) {
CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > spr = A_A_DECAL ;
} else {
CURRENT_ENCOUNTER . entities [ BATTLE_CURRENT_TURN_ENTITY ] - > spr = A_A_RECHARGE_DECAL ;
}
}
}
if ( turnOrder . empty ( ) ) {
bool allDead = true ;
@ -2931,12 +2968,27 @@ public:
CUTSCENE_FLAGS [ 0 ] = true ;
TIMER = 0 ;
} else
if ( ! CUTSCENE_FLAGS [ 1 ] & & TIMER < 240 ) {
if ( TIMER < 240 ) {
BOSS_SIZE = {
std : : clamp ( TIMER / 240.0 + 1 , 1.0 , 2.0 ) ,
std : : clamp ( TIMER / 240.0 + 1 , 1.0 , 2.0 )
} ;
SHIP_COLOR = Pixel ( 255 , 255 , 255 , ( 1 - ( TIMER / 240.0 ) ) * 255 ) ;
} else {
if ( ! messageBoxVisible ) {
if ( ! CUTSCENE_FLAGS [ 1 ] ) {
CUTSCENE_FLAGS [ 1 ] = true ;
DisplayMessageBox ( 62 ) ;
} else {
printf ( " In here.(1) " ) ;
updatePlayerState ( ) ;
printf ( " In here.(2) " ) ;
EndCutscene ( ) ;
printf ( " In here.(3) " ) ;
ENCOUNTERS . push_back ( ENCOUNTER_A_A ) ;
printf ( " In here.(4) " ) ;
}
}
}
} break ;
}
@ -3309,6 +3361,14 @@ public:
DrawWrappedText ( { 5 , 5 } , " A drought is active, causing healing to be reduced! " , WIDTH - 8 , DARK_MAGENTA , { 2 , 2 } ) ;
DrawWrappedText ( { 4 , 4 } , " A drought is active, causing healing to be reduced! " , WIDTH - 8 , WHITE , { 2 , 2 } ) ;
} break ;
case reasoncode : : PETRIFIED : {
DrawWrappedText ( { 5 , 5 } , PLAYER_NAME + " became Petrified! " , WIDTH - 8 , DARK_RED , { 2 , 2 } ) ;
DrawWrappedText ( { 4 , 4 } , PLAYER_NAME + " became Petrified! " , WIDTH - 8 , WHITE , { 2 , 2 } ) ;
} break ;
case reasoncode : : RADIOACTIVE : {
DrawWrappedText ( { 5 , 5 } , " The radioactive environment made all flora die. " , WIDTH - 8 , DARK_MAGENTA , { 2 , 2 } ) ;
DrawWrappedText ( { 4 , 4 } , " The radioactive environment made all flora die. " , WIDTH - 8 , WHITE , { 2 , 2 } ) ;
} break ;
}
} break ;
}
@ -4139,7 +4199,8 @@ public:
power - > name . compare ( " Hide " ) = = 0 | |
power - > name . compare ( " Hyper Zap " ) = = 0 | |
power - > name . compare ( " Glare " ) = = 0 | |
power - > name . compare ( " Petrify " ) = = 0 ;
power - > name . compare ( " Petrify " ) = = 0 | |
power - > name . compare ( " Radioactive Transmission " ) = = 0 ;
}
bool isFoodMove ( WEATHER_POWER * power ) {