From 1a206fa627d44371c03ac513500c79d0d536b07c Mon Sep 17 00:00:00 2001 From: Kye Hunter Date: Fri, 5 Sep 2025 20:01:23 +0200 Subject: [PATCH 1/2] Add a new "powerup": Rotten Egg Also, add placeholder graphics, and make it available in bonus blocks --- data/images/powerups/badegg/badegg-shade.png | Bin 0 -> 1989 bytes data/images/powerups/badegg/badegg.png | Bin 0 -> 2576 bytes data/images/powerups/badegg/badegg.sprite | 10 ++++++ src/object/bonus_block.cpp | 35 +++++++++++++++---- src/object/bonus_block.hpp | 1 + src/object/growup.cpp | 34 ++++++++++++------ src/object/growup.hpp | 5 ++- src/object/powerup.cpp | 16 +++++++++ src/object/powerup.hpp | 1 + src/supertux/player_status.cpp | 8 +++++ src/supertux/player_status.hpp | 3 +- 11 files changed, 94 insertions(+), 19 deletions(-) create mode 100644 data/images/powerups/badegg/badegg-shade.png create mode 100644 data/images/powerups/badegg/badegg.png create mode 100644 data/images/powerups/badegg/badegg.sprite diff --git a/data/images/powerups/badegg/badegg-shade.png b/data/images/powerups/badegg/badegg-shade.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7dec82dc9ba1d881b663c100f6d62da2a08978 GIT binary patch literal 1989 zcmV;$2RitPP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2k8j|6D*ohoy#<;f*-9M(M#72;EChj=EN7<8B*nB4PLwFAg}-JdCE&0SHIZ_F@YvnLkZ+|M}>9lL-ZuN=|pzsE}dA^0>UzB1dzx*DELiRUW3Hu^-G*76TCRj<&{U&{VzhD_<>95nAMJbhW)@Une7C7=9joLf-}H(4jt7SZvpVc zaVvs{n;W=&`;4E~-MrwI&DjFZzd_ZU${a-y_dX&6{Pz1!-j6@}nc+Xc)8BOlZnQZd zvlnxNVP@E~xWMheFKr$>bW|0fTyuZ}sc?Ujc)T{8LUe5dt>C8J2^+)mQzbD>k_0M zMMZOwyE*051)5!jW()D%Uy?7JC2rnNSwF+f!8XKn%xph`SO67KQ_C8VBY5zMZ$X3g7OWWYt9;Q3UN)#YVpdt9iI6A;N zv#y3WB|c=h^;#9&lV`k^#pw`>-iS(y4)r~$_9S|ef>ak|53UHnt?!5FMRKVqc^HC_ zSRgheHi3#sVY0+ri4v6uR*zX}^_Uaz@!aqV;*w3&o)kTaKv7AqLvT#0L78OAGe2|- zaN$?9`}UBcMI@4hBv7K0m@@zgo2(!kl3;`2PD3g{k+_S@ix#exMy5r$CWru!!7(U6 zCVP|i=|??VEKnbW3b_b{5Jol`(b_CymVwq#6r_MG*j4B3Ex;7$G@zVP={$%^f=vxd#)vJoa3 z96eQLE>STWQ5z$Pgvsg%n}W#$b`mfdQ(tWC!3l8Cj2@AaNRilHfSpRLD}l|70i6h{ z4Khsb1mHZ33H}wD{k6G22oh_LX;!*+r8pB3uBwOpPJHp5sv}@=Q zJrEYwK()q$ItJjuQVdy4<7pe4qR|6via-cPxxP|>*O}8YBa<*ern1Cv;$@6t$iM>IFVa_lX zTbGMO)li@^4vpHLTvNuO_Ru(3a%CH43gl5mHG2MZ-Q;D$@({ZEL zq66xcD|V=H*O}X}C<Fc3p9|t>$JhnUJU?Iu$kzo35OTju#1jw{lpQ-}YT_^4s1Q;-M^VszXiF zVvU)u);y1F-@5s>HnS2vqElg>GwYbH?>QSiPf>Y!<*?@0{WN>>8~!}zQ$Pw+2^2k6 zrrF}gH9K`mbSX1WnGKuXW@kU=q!N!&nXep{-|^#g^|)`7`5cM+EczrC5;X%0A%b8$ zc~00t8 XXG+@!L>sq~00000NkvXXu0mjfqXm~9 literal 0 HcmV?d00001 diff --git a/data/images/powerups/badegg/badegg.png b/data/images/powerups/badegg/badegg.png new file mode 100644 index 0000000000000000000000000000000000000000..abb9bc9694a9093a326f9b5628f72d4e2815c8af GIT binary patch literal 2576 zcmV+r3h(uaP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2k8j|6DuxO{J{DE00~q{L_t(o!^M|dj9%AO$A4?>ea?58`R3{w+Z~U`W5gff>%aEe{{{cgL*DAbfB&TA zvEYawVec2v5UcaFP2q!yj^x5zxB5HCl1~t)&Cm6S3ln0(`?p0 zrcLhb(Y|42V_|%ySks1jGG}ypE7WTvw1%gXXkLsD4{xBhkP=r`Hm;qzeDU)Azy0~2 zI`d-#`1T)I*6;D@Xx)!IxA4%m7Z+YA7naXtYrSi_xO|r7atUIh2z@ezR%3|yiK9$S z?u;{2yTk4s2jcF@{c)te{mPk3FMj3|pFQ@+ZyCVxPqn8T!$V(KTz~$Zk393m`YRio zJoLifP?I{n2q^_DMobC}5CJ0+4eHL*9BMH;y_a|GzuOM&dbdrC><9~&7S11;yX&Sq zKP~n~U;am(fA6ns#3#P>$mxgXPCWgU`lZFwxHQCcKErFp75br1j1dt5JguxjEgwQe z*euqmLP59N;q2mR`c+?wYC~?BzcZiRz3;~Fo&D}vVBZ`4xi?Nuea;%O;@_Tm`RM}> zKlSCtljlxIFZF2oZQQ*5edKOiK69pF^G+BCzf4bVceD^mVyRY>h&mL!Cb&*Vr zkd$0uF)F-ZP_R-hON<4(rw(xY%|Bze z?0vt4wbXsb%||ER`5RLFPy~*&e(}S@RkcZyL|yB2V;j{Pv!e$|si4sqp$tZ@Uiw9c6h$T)6h0yyK>5Uv1Glwfry|uBRO7MUEZ={Cz|0KqnuuOnkoeb2T%}9l2j5?AjCG^*hQ^Ct-{PmsiNCowMz@nvDSS}_Pp)D zo-chki65CE+t=B9^I|?W9v} zP{e?l5mLm3QUG%#N^^*SSBF|*ohq`iv20gfJuh?9hjiCL5zWV7c%rp=W#yvvdz*w5 z0f%#r+PdnoFWaCfQcuF$2R1hze!dp@iP1I{4!Q?C(H#I_>v`iN#kB7TcYvoxSW5LEcV)uNaP9 zzJZ$2552a}*#x2ooRE?t{Y(Ru8qpw`(M^zP5VL5(B3Rf0@VZNRea9H!-T=qR>k%|W zlqiwH+K738ewHI5hyuZnX}N1^_W7Etr5n24bRD$I$R zsWLDL3Gk|Tms^FyqN86G(hoh%V$BROC=`gb8rlB2cf8UZ8aGux$aOP!H2MW@1MPWiJt%0x$!w}nmNpl@p*>xF>;ro zD0SJ&d6BJ1$ktr1M?yq#qIl=YwT@~=G>=zMQAV00a%lc`4$d59YdCc+_c>AO)O?MK z#8BRpLvx3@?cn5P_j=PWk(%uis!ka{?FPryHjLbd|Egv4z30_!uifgM2XlMh7 zSwyX710}2jAlDOcK$of`(>f|Sxrc3yahct93y1gKMoQY5nZDuo1YY`YW%+#{{rWwd z+P*(08-97|3>TJO;_C7RHal18R()cMB$9dY*JhpW54Yh?Ag^>&XlSDxU~(gm)qU!_;9 z(no2MFoePeXFgZRvSEfAEoQgvV03gBBh4`;ho;E=crA z@7Esu^7hHupADhI`o;$5mQJ$XSskdL7)T^CSHsMR37WMg+s3xjYBmv3TEjc3rPlHH z{Pf%JaYiwJOzg+*4L|qm&wjAc(BE&2486N5`$8&Fb!?W)bd$#;)P0LGY?7&`RhuAM z2<`U9H@n^b?|$qr-}~7ANq7ABzj(&m_contents), { _("Coin"), _("Growth (fire flower)"), _("Growth (ice flower)"), _("Growth (air flower)"), - _("Growth (earth flower)"), _("Growth (retro)"), _("Star"), _("Star (retro)"), _("Tux doll"), _("Custom"), _("Script"), _("Light"), _("Light (On)"), + _("Growth (earth flower)"), _("Growth (retro)"), _("Star"), _("Star (retro)"), _("Tux doll"), _("Rotten egg"), _("Custom"), _("Script"), _("Light"), _("Light (On)"), _("Trampoline"), _("Portable trampoline"), _("Coin rain"), _("Coin explosion"), _("Rock"), _("Potion") }, - { "coin", "firegrow", "icegrow", "airgrow", "earthgrow", "retrogrow", "star", "retrostar", "1up", "custom", "script", "light", "light-on", + { "coin", "firegrow", "icegrow", "airgrow", "earthgrow", "retrogrow", "star", "retrostar", "1up", "badegg", "custom", "script", "light", "light-on", "trampoline", "portabletrampoline", "rain", "explode", "rock", "potion" }, static_cast(Content::COIN), "contents"); @@ -414,6 +415,12 @@ BonusBlock::try_open(Player* player) break; } + case Content::BADEGG: + { + raise_growup_bonus(player, MALUS_BADEGG, direction); + break; + } + case Content::CUSTOM: { auto moving_obj_copy = to_moving_object(GameObjectFactory::instance().create(m_object->get_class_name(), get_pos() + Vector(0, -32), @@ -582,6 +589,12 @@ BonusBlock::try_drop(Player *player) break; } + case Content::BADEGG: + { + drop_growup_bonus(player, PowerUp::BADEGG, direction, countdown); + break; + } + case Content::CUSTOM: { // NOTE: Non-portable trampolines could be moved to Content::CUSTOM, but they should not drop. @@ -656,9 +669,13 @@ BonusBlock::raise_growup_bonus(Player* player, const BonusType& bonus, const Dir const std::string& growup_sprite, const std::string& flower_sprite) { std::unique_ptr obj; - if (player->get_status().bonus[player->get_id()] == BONUS_NONE) + if (bonus == MALUS_BADEGG) + { + obj = std::make_unique(MALUS_BADEGG, get_pos(), dir, growup_sprite); + } + else if (player->get_status().bonus[player->get_id()] == BONUS_NONE) { - obj = std::make_unique(get_pos(), dir, growup_sprite); + obj = std::make_unique(BONUS_GROWUP, get_pos(), dir, growup_sprite); } else { @@ -673,9 +690,13 @@ void BonusBlock::drop_growup_bonus(Player* player, int type, const Direction& dir, bool& countdown, const std::string& growup_sprite) { - if (player->get_status().bonus[player->get_id()] == BONUS_NONE) + if (type == PowerUp::BADEGG) + { + Sector::get().add(MALUS_BADEGG, get_pos() + Vector(0, 32), dir, growup_sprite); + } + else if (player->get_status().bonus[player->get_id()] == BONUS_NONE) { - Sector::get().add(get_pos() + Vector(0, 32), dir, growup_sprite); + Sector::get().add(BONUS_GROWUP, get_pos() + Vector(0, 32), dir, growup_sprite); } else { @@ -720,6 +741,8 @@ BonusBlock::get_content_from_string(const std::string& contentstring) const return Content::RETROSTAR; else if (contentstring == "1up") return Content::ONEUP; + else if (contentstring == "badegg") + return Content::BADEGG; else if (contentstring == "custom") return Content::CUSTOM; else if (contentstring == "script") // Use this when the bonus block is intended to contain ONLY a script. diff --git a/src/object/bonus_block.hpp b/src/object/bonus_block.hpp index f0c9160b5b..e8aa36d812 100644 --- a/src/object/bonus_block.hpp +++ b/src/object/bonus_block.hpp @@ -36,6 +36,7 @@ class BonusBlock final : public Block STAR, RETROSTAR, ONEUP, + BADEGG, CUSTOM, SCRIPT, LIGHT, diff --git a/src/object/growup.cpp b/src/object/growup.cpp index e5e1dc6ed4..fe66d21f2e 100644 --- a/src/object/growup.cpp +++ b/src/object/growup.cpp @@ -24,21 +24,28 @@ #include "sprite/sprite.hpp" #include "sprite/sprite_manager.hpp" -GrowUp::GrowUp(const Vector& pos, Direction direction, const std::string& custom_sprite) : - MovingSprite(pos, custom_sprite.empty() ? "images/powerups/egg/egg.sprite" : custom_sprite, LAYER_OBJECTS, COLGROUP_MOVING), +GrowUp::GrowUp(BonusType type, const Vector& pos, Direction direction, const std::string& custom_sprite) : + m_type(type), + m_default_sprite((type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite"), + MovingSprite(pos, custom_sprite.empty() ? ((type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite") : custom_sprite, LAYER_OBJECTS, COLGROUP_MOVING), m_physic(), m_custom_sprite(!custom_sprite.empty()), - m_shadesprite(SpriteManager::current()->create("images/powerups/egg/egg.sprite")), + m_shadesprite(SpriteManager::current()->create((type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite")), m_lightsprite(SpriteManager::current()->create("images/objects/lightmap_light/lightmap_light-small.sprite")) { m_physic.enable_gravity(true); m_physic.set_velocity_x((direction == Direction::LEFT) ? -100.0f : 100.0f); - SoundManager::current()->preload("sounds/grow.ogg"); // Set the shadow action for the egg sprite, so it remains in place as the egg rolls. m_shadesprite->set_action("shadow"); // Configure the light sprite for the glow effect. m_lightsprite->set_blend(Blend::ADD); - m_lightsprite->set_color(Color(0.2f, 0.2f, 0.0f)); + if (m_type == BONUS_GROWUP) { + m_lightsprite->set_color(Color(0.2f, 0.2f, 0.0f)); + SoundManager::current()->preload("sounds/grow.ogg"); + } else { + m_lightsprite->set_color(Color(0.2f, 0.0f, 0.2f)); + SoundManager::current()->preload("sounds/hurt.wav"); + } } void @@ -84,13 +91,18 @@ GrowUp::collision(MovingObject& other, const CollisionHit& hit ) { auto player = dynamic_cast(&other); if (player != nullptr) { - if (!player->add_bonus(BONUS_GROWUP, true)) { - // Tux can't grow right now. - collision_solid( hit ); - return ABORT_MOVE; + if (m_type == BONUS_GROWUP) { + if (!player->add_bonus(BONUS_GROWUP, true)) { + // Tux can't grow right now. + collision_solid( hit ); + return ABORT_MOVE; + } + + SoundManager::current()->play("sounds/grow.ogg", get_pos()); + } else { + player->kill(false); + SoundManager::current()->play("sounds/hurt.wav", get_pos()); } - - SoundManager::current()->play("sounds/grow.ogg", get_pos()); remove_me(); return ABORT_MOVE; diff --git a/src/object/growup.hpp b/src/object/growup.hpp index ec10fe8fb7..a381786756 100644 --- a/src/object/growup.hpp +++ b/src/object/growup.hpp @@ -19,11 +19,12 @@ #include "object/moving_sprite.hpp" #include "supertux/direction.hpp" #include "supertux/physic.hpp" +#include "supertux/player_status.hpp" class GrowUp final : public MovingSprite { public: - GrowUp(const Vector& pos, Direction direction = Direction::RIGHT, const std::string& custom_sprite = ""); + GrowUp(BonusType type, const Vector& pos, Direction direction = Direction::RIGHT, const std::string& custom_sprite = ""); virtual GameObjectClasses get_class_types() const override { return MovingSprite::get_class_types().add(typeid(GrowUp)); } virtual bool is_saveable() const override { return false; } @@ -39,6 +40,8 @@ class GrowUp final : public MovingSprite private: Physic m_physic; + BonusType m_type; + std::string m_default_sprite; const bool m_custom_sprite; SpritePtr m_shadesprite; SpritePtr m_lightsprite; diff --git a/src/object/powerup.cpp b/src/object/powerup.cpp index 54480880a5..2814d38291 100644 --- a/src/object/powerup.cpp +++ b/src/object/powerup.cpp @@ -59,6 +59,7 @@ PowerUp::get_types() const { return { { "egg", _("Egg") }, + { "badegg", _("Rotten Egg") }, { "fire", _("Fire Flower") }, { "ice", _("Ice Flower") }, { "air", _("Air Flower") }, @@ -77,6 +78,8 @@ PowerUp::get_default_sprite_name() const { switch (m_type) { + case BADEGG: + return "images/powerups/badegg/badegg.sprite"; case FIRE: return "images/powerups/fireflower/fireflower.sprite"; case ICE: @@ -107,6 +110,7 @@ PowerUp::initialize() { physic.enable_gravity(true); SoundManager::current()->preload("sounds/grow.ogg"); + SoundManager::current()->preload("sounds/hurt.wav"); SoundManager::current()->preload("sounds/fire-flower.wav"); SoundManager::current()->preload("sounds/gulp.wav"); @@ -115,6 +119,8 @@ PowerUp::initialize() { if (matches_sprite("images/powerups/egg/egg.sprite")) m_type = EGG; + else if (matches_sprite("images/powerups/badegg/badegg.sprite")) + m_type = BADEGG; else if (matches_sprite("images/powerups/fireflower/fireflower.sprite")) m_type = FIRE; else if (matches_sprite("images/powerups/iceflower/iceflower.sprite")) @@ -147,6 +153,9 @@ PowerUp::setup_lightsprite() case EGG: lightsprite->set_color(Color(0.2f, 0.2f, 0.0f)); break; + case BADEGG: + lightsprite->set_color(Color(0.2f, 0.f, 0.2f)); + break; case FIRE: lightsprite->set_color(Color(0.3f, 0.0f, 0.0f)); break; @@ -209,6 +218,10 @@ PowerUp::collision(MovingObject& other, const CollisionHit&) return FORCE_MOVE; SoundManager::current()->play("sounds/grow.ogg", get_pos()); break; + case BADEGG: + player->kill(false); + SoundManager::current()->play("sounds/hurt.wav", get_pos()); + break; case FIRE: case COFFEE: if (!player->add_bonus(BONUS_FIRE, true)) @@ -255,6 +268,9 @@ PowerUp::get_type_from_bonustype(int type) case BONUS_GROWUP: return EGG; + case MALUS_BADEGG: + return BADEGG; + case BONUS_FIRE: return FIRE; diff --git a/src/object/powerup.hpp b/src/object/powerup.hpp index 5f1d3605b4..2241b6e93d 100644 --- a/src/object/powerup.hpp +++ b/src/object/powerup.hpp @@ -24,6 +24,7 @@ class PowerUp : public MovingSprite public: enum Type { EGG, + BADEGG, FIRE, ICE, AIR, diff --git a/src/supertux/player_status.cpp b/src/supertux/player_status.cpp index f5d8c69bd5..16b1501c5b 100644 --- a/src/supertux/player_status.cpp +++ b/src/supertux/player_status.cpp @@ -109,6 +109,8 @@ PlayerStatus::get_bonus_name(BonusType bonustype) return "earthflower"; case BONUS_GROWUP: return "egg"; + case MALUS_BADEGG: + return "badegg"; case BONUS_NONE: return "none"; default: @@ -124,6 +126,8 @@ PlayerStatus::get_bonus_from_name(const std::string& name) return BONUS_NONE; } else if (name == "growup" || name == "egg") { return BONUS_GROWUP; + } else if (name == "badegg") { + return MALUS_BADEGG; } else if (name == "fireflower") { return BONUS_FIRE; } else if (name == "iceflower") { @@ -152,6 +156,8 @@ PlayerStatus::get_bonus_sprite(BonusType bonustype) return "images/powerups/earthflower/earthflower.sprite"; case BONUS_GROWUP: return "images/powerups/egg/egg.sprite"; + case MALUS_BADEGG: + return "images/powerups/badegg/badegg.sprite"; default: return ""; } @@ -358,6 +364,8 @@ PlayerStatus::get_bonus_prefix(int player_id) const return "small"; case BONUS_GROWUP: return "big"; + case MALUS_BADEGG: + return "corrupt"; case BONUS_FIRE: return "fire"; case BONUS_ICE: diff --git a/src/supertux/player_status.hpp b/src/supertux/player_status.hpp index 7848199139..3bc7c53168 100644 --- a/src/supertux/player_status.hpp +++ b/src/supertux/player_status.hpp @@ -43,7 +43,8 @@ enum BonusType { BONUS_FIRE, /*!< @description Fire bonus. */ BONUS_ICE, /*!< @description Ice bonus. */ BONUS_AIR, /*!< @description Air bonus. */ - BONUS_EARTH /*!< @description Earth bonus. */ + BONUS_EARTH, /*!< @description Earth bonus. */ + MALUS_BADEGG /*!< @description Rotten Egg fake bonus. */ }; /** This class keeps player status between different game sessions (for From bd0cdbdcc185f14ceb1fa774ddd663448619d5c9 Mon Sep 17 00:00:00 2001 From: Kye Hunter Date: Tue, 9 Sep 2025 19:56:22 +0200 Subject: [PATCH 2/2] Clean up Rotten Egg Improved badegg sprite by Frostwithasideofsalt Fix the initialization list/member variables in GrowUp Change the nested ternary operators to chained ternary operators Make a Rotten Egg bonus block tile available in the editor --- .../objects/bonus_block/malus-badegg.png | Bin 0 -> 2999 bytes data/images/powerups/badegg/badegg-shade.png | Bin 1989 -> 2225 bytes data/images/powerups/badegg/badegg.png | Bin 2576 -> 2513 bytes data/images/tiles.strf | 30 ++++++++++++++++-- src/object/bonus_block.cpp | 2 +- src/object/growup.cpp | 17 ++++++---- src/object/growup.hpp | 4 +-- 7 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 data/images/objects/bonus_block/malus-badegg.png diff --git a/data/images/objects/bonus_block/malus-badegg.png b/data/images/objects/bonus_block/malus-badegg.png new file mode 100644 index 0000000000000000000000000000000000000000..29bec808a29c8e4cba18b5e1792dfb4036df58f3 GIT binary patch literal 2999 zcmV;o3rO^dP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007 zbV*G`2k8k35ep8KFYuZG01Ep_L_t(o!&R4Qj9%q=hOc)y%eTz(d1kzgJ>Kw!$0mTW z0kfDa(57Ueln|=+PgNE2tBVw=qH3f5s8l8DuS9Lt1~nCkl#n(HLMS0FMUDv}*cfBH z0`_>kj6K^o-*%RF>yK}!$}1h|=txJ;Igjq=dhT1WeB|KR9P(}e(IxA=4}8bBW`7JImWw})lz$oa94ON# z{%mAo-vKsNBsB%sO4whAMdK*1Tx8~rLloDhSh{+d#ivmS{x)r&8D`tEf z`Pc+{WEE{IXxo7Io+T6D+}nu%{PsL2-z>1^8Q+@y8zBeBzCeJesI@Q&-`HcbHlK^3Ka>)d0ze5 z&v^ddzsJ$HkI@)jNil2KvF$FBsE(5T&O7UflY|dHI>w3><1BQq)0OkcibTdSqg%GK z?ZMxrI=P>h&n_^#*rQxE3jgrOO^zQvrqR)D8@~EvWnBzgQy5Ut?DY88fBX(F{p2O) zuXnk9(--l^AO-|m)=!e6G`!8H_R4=E#*OsJ)U>|A{pE0b~T;v6?#`w6}8 z{Vn7LG~0ynNr)mXsSbuz!p0P=wS4QF-{LpN-(%t00xROxoId{=Ns{uJ`=7u$L!=WT zRYA!ZA!3A(c<~2rAP@Ocp|N-q&4EW z#_-SxyNcd*_{Vv92wAxM9uiH$!GfNWJ z(K2H5hP`N|F_%w$`~jY0zjy@|rHl`4N6MJs15$$bfe-@D8I)37xpoGEM{A8hAf-ep zjaCXN0KuX0}x~|``tku^Q2y|LSi5`(k5i%eZ zI45wnzz0VNfjsZg&6ZGF5j;pK2|*Bm-~-M(2!gBErU1$6u`NVV+TUB=k>x#{b7-NF zGQxX{@D44!r?F-oZqf9Wtztq56h($}CA0Gv$nrL$BNL=?6=MqGC`AZx&Mg=47;7nt zj0@Ap*}3&@1_p*vN|Wb3iZaLh5-A12ORDi8ZCBu(M+*YA`T*^yhO>q|c#J9NW{Y$> z3*4ByfRYid_8j$EgI9j>T_$(l$Hs|WgaFk1T2hy)rH^*5T-7+a8a+RWTIkCc*IcYl^UZhH{t98;IhFtTDTckO$aH-7yR z7pG2g;Lb--N@I%>DLqM=uxZ1mNa7m7TLK>MEK!tTZGVIM;88k41c&e*9c%${f=LPL{m$9)Crmvo6XmE_OEP3F*$GCLq1717)JQM3a#paDW2}V(` z4&l5Z&od&OAQePWOj!mH0SE}OY+HotPk|5$RjE^E9agX0%$k*3Sz2n-YIX2VP_0(* zUNE`iUOL@2S(el7^jNcIf&=>>CC}R&d-o7C*FPeJ2q`pIuAN0kP?iPO2Ecu6j}Qnl z(*>ysLLiZX`sf&0=ptl-u@0r;KBc5W$(TIrvTof*+MPK%ohC(DaQ*rWoz4=@8y1?E zsZ@q>uE06Zp2@p-@6<1;Rx9LrhI0;Mvi~z|S=mOoKHg<;p6c)lGSeXhixdIpN_>zw zZ~96Xk`Q2YWG#7-vDmypt3A)Jj{b-c91q;{2VA`L4$eEGD51zp_V0a&cTT)cqcKQX z_V7Lc0v`gwWVqpt2pu7Vl!(zaR4Orr%`wK{oWYnb-dUWtNTF%BTC80&fe@anGv_#V z;w5g|{ScEo?!~)4C&aQLElZ0rhP(FtHXmL%#ntQQAh3+>WltN|L1`pHl5E_`j$3bK zwmF3leW&A`$9wuD^cJZUMNtyRDP`H?!2ZV=8(mMg*C9y~HcsrpI)n2Tgd@ue%CbZX zO|{Zk79sT90tkU$y#oSBLSQy&&{|qzYVkd+vjiO0<`~<>nv$|K5CjB4tvbNkwVSEe zMzF>c=?cbpROg6rs%U7vpx5ez4< zzKV4g=LN<%in2i9@WB%ZL{XK|#s-v(5CWtE9~{mZw2pv4p67UP@ZQmC&$7_G%%#hx zICc4TTFrUP#HV3&JqVm6@0zI`Zu-LSGjaDpy5$m6&7*+BT8p(A);aR5N4MLiEHj+5 z7+YXnNl|3i%4KM`F_6)YM4ZG!jM708W*JyfeI>vIU zt+@G*zRtz7=eRO^hMvioTy>DLED53AA0W|BG9d(nP=LpK2MDB$ur5a+2n2$+trTMmORy1_uV2U$K?)^xJgjE^;HAVx+bn zxja7JJDm3f4je#C5{) zLoFqe+UHznadmm;@95d3j9y46$8SMipQfBS&y|H!6d|V;uK*Om^^t0q3nLuChh@%N zoU;_R%k<(2&Rsb|mUl3XZ4{Hg2gB<@MKCf9zj`+Jm(Cp*a&YXc2>Gn|;-Bc~(LY5O z1?6m$a(0RI$PWm|zK;+Br6bbn08x?<$&_l+fZ*}oqhv(xx^(jeOy0vUM>lH?cFX6n z+aDxINt8s0&Fkdlwn z=#LTjz6Jm#h!frZ17#f9o6&-6tXA1w;k4ks^b#V6YeQWj` z;{V0-FA>FGr&8O4^NFYpD$=Tg03jekK;~V9DF|f=&h*`}5dDy?BhV2cN(pI|ATgS zRoy)^JG)-b+Urc#P8^Yz#|U`iNC=Ee}Z4Y0}@X>A)!b}Nu&@Z zjzn%=C&Ji{?eW^1+1Z_)OLte*IXp~{SsVyPJW!g}^z>BM_kY!Qt_A#`2R+E7_Q}&k zL^%;X2H-oYdR|qJ0}wMa01Ds$z%2kD1Naoct!g-k{}X|gQ;(2y?xgqrdrstWW@-Vn z8)BHmnDP)po>Hn+wQFW;00MwEfC|7~L*~tDIGF#}1XlZJT~Xw(t#-Rlx7+Q{JMH!d z&dC9@t3n+^9e<)ur*llEGp*{%*LB@8wUjhIt{S&g)5B)E*^v58H5_a|FoD(n*_BSG z{qx@Xaq9JsU3_S>fAh)n=XQw1u?W@k3j32Os&BhS}~?oGhK}- zY{Xdh>w0$9OxFSYwi*uJx*yBk|DdyZrYMU1SI5@YE`OcgdibMfo_c!w^&h@Ed*Qin z(az3Yt3xCfHcd)I(6|45F}?Hd2lei7gui@v$>wG0RMm^PY3B1?C*EeW{l^XV)4bQe zTMY-7|E&V86I)r9WxqVp>x~{g^Vl0NKL5<%$#duM?6Vi9-+1iN1c2{*hX5FW2tZ$W z=|?i!KYwUdRlR9u4*^(DDR!r`(MAaKCjblp{JI(rhRX$bd6W101mI^`mh;-N6Yrhc zeCXzdb5G1Kod0IoKefqb<^dFDRsbjf6snr5st4c!$op^pK6ToynfGptg(E7naGrPO zMDhiIEda0Ny}o>f0D!YZ^m37RJ~`H1yME?$KYtuwU&G0b9v6A$vGDE=5v>B~0%#La zOI259vw1O@Oy$Fmx2fA*$-VQAnQH(Q5k>EEWWF`UB2-@n(Eld_d9Tj^UM1q|-sRU- zb=K{+soU*vt5py)XGD|%=rrIf09J@7V`c`B-M+J1y#3Dmowe>tp5@+{xoT7>i8$tY zJAX0B6o3GDZK=Xifnxw(7IB{ucmy*{#$#xV98;8LUe-8m)?6L{6OlP5$%|0t9Ctb` z%AGSJ)Bt7x=0sGBc=NuP0XPKkRAY{N1fBzMlOVU$Qe9VbnjDV#U_3%y*PK!kGm|4u zCynFP07`%qge0DkWgZ|(%v=*ux%eN6h=18rH{iAaQ_3SZj(Tn4xA$o_c3WffYgb{xPa5giB6G9Zt!%2NvM z#{A?Ob|rv}h`VNpA%!?P7}@saI)4#aj4{N+!!i2(ep+8&H}8D_pmkl_U@)M+Ub!Nd zw=eTxFyQ^sh~{PKHE9Q+DYpl^axkr29jq{Lmw#9?B3e2w z7Qp12-7|o$1F+T*fSR@dGJrx-ogYqSsVb*5KG+X?dwaINzK#$H17*W>%IZ z9UhKTyWQ4Kr-MAtm54ZmV1HE|cwSa{9W+no3iidSFdPvTjnvEVB>-%is38CVV+Y`N zGl^3Q0$7Jwl-Wg*%o5jD)$=;kb(&13(ffTcGng3$kg7QYwMp`VovaGU3K2V61fy>@ z$O{Z|)&yxo=!yfdgGFW&)r4d*bDVX>=g~})YGN456st-#rBnyd!hfbj%$~?)EUx9f zUlE_TSX@EG9z;Y$ONBjv+$=emE(sWb_Z)z`0EUedS_lioy$G3D~Q-NsxG~~wIHCJG-w0vndM_w4F{I@`fmVu5x_iz zit;RZW@(Gd7R@M2TYn_0QVP*jlbJFRIb!kRykp6{INxINj#(H){s@6KfR3vA7=x*5 z1dsrHGT*%smmSe30A2zxQww5wO%GvOl4*531o{miPJ>0h|L+R`t}2%YU7BdCnw-2`3^6fCV#) zfDu5Bh%yiffryA5h!~3sxio<@GgeJjhk2;$QXBAF0In`Q@!rUL{a-ZCB+J^Xo%VV` z#7#N2=3~pGA_Niu(g0Hf&Wn&Ym?=UmQB^Yyp-g}U0AB+5V>KLniu)6VYj+1&)aszB zV3th8$-Q0CVt?1o<|M#z5W>h zuVWFW%Qh?>d4HK$V)MQ19p3`*hiW(&eBJsFbUFrrV&imSmc9+(0)R6BHn2!CibX&1 nB^IIe5gvf|s^Or1kahnK2~k0D)<>z600000NkvXXu0mjfxJe5@ delta 1955 zcmV;U2VD5E5ycOXBv=7+Qb$4o*~u(_00004XF*Lt006O%3;baP0000WV@Og>004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00006VoOIv0RI600RN!9r<0K( z7k>Z;bV*G`2k8j|6DbW|0fTyuZ}sc?Ujc)T{8LUe5dt>C8J2^+) zmQzbD>k_0MMMZOwyE*051%H}dg=P!!-CvR~oF#7FPgy_1%)vIqbj)l&f>;0*QB%tr zkRy2TiQ~>!07%?G;{M3IoC@bVgL>qi)b*rAkD@0z$UaMX>U+b-08888*&e1l$VwC- zOQ0e6#yC2_IkT>YHzht~xb<2U+>>X#mc{81i{6MziVpQXsrDp#l7E6!7i15v2*9oH zhv`LfsVI3Ef{<7sHY7HIib-Lz#9WCIl?PUjS!wl{6Y%le@CxFRP1K$gJ&8b3Nv=b1 zOsYYdWXdx?bPI6dSG4=~kfKE-l7u8sqLY|2012C{ARCfkgWyg>DnOCAi_D7_u9Zfn zMYtx20FS{jC_pBAlYjQQYBl*OzuC>`d%5d31xd#)vJoa396eQLE>STWQ5z$Pgvsg%n}W#$b`mfdQ(tWC!3l8Cj2@AaNRilH zfSpRLD}l|70i6h{4Khsb1mHZ33(;{u;wZ zX(U_gtvkZV8nkQZ5j_wV)Ge#M!CLHfY+JRG9!~P zL8h|AaN=c*V#vS(QyESl2s{w8U>XNAn-vi$v8>pfV1P+MZlf#-aAmI9PIJ8)gdRQAIU+{&e4$^=JW* z`8~mXw12EqiLn&Zaii9v1L~D4cBpaLVznV_1Tg50GP>Tx!7@pnTne1Obmm_~^*>b6x79x|{+M7GK@g3(y_qybRDO}X}C<Fc3p9|t>$JhnUJU?Iu$kzo35OTju#1jw{lpQ z-+%U9aPr&U7viBTZmL5~(_)R8uGTz{Y~Q;1wl=d8J)%=#o-^y1uJ1V;Jx@`2dF8O? z*Znkm@*Dm<=2JilQwbD3R;JnF#x*;2N^~hRPnivy-ezY%=cE#kQJJqCmf!K?boIDz zlldHp`z-n-77{fB3n7AFJb6yoK^v7qus~|_lS4;!=3T#z$If{Qd`#kl32w9411wpD pg3W+)z^j<&fD?y~YH>aL{u5_P+Xh4%w~_z=002ovPDHLkV1g92nH>NC diff --git a/data/images/powerups/badegg/badegg.png b/data/images/powerups/badegg/badegg.png index abb9bc9694a9093a326f9b5628f72d4e2815c8af..1f59832a8dacefd049608d9c4da0ea3ec04ec343 100644 GIT binary patch delta 2503 zcmV;&2{`tU6wwoqB!3BTNLh0L01FcU01FcV0GgZ_000StNklZBn@mIxix#C@nG4M_Ci$ZQwOA=C!&UewV?n z|9=Z`^D8GbgT`4Ritd*inqmm9HU8e9)_*6`)^&Yf_dcL#a(+@${7#-1 zPb|)yZhw09=ddC?*u2igCx3zv1J-638T|!K;G3GV?BQG+=h}!EoOR5NAC(xr44PdV znrg0SkNuMGZvEl^DnKUY+G5P#6s`8-Mb>E_nRr|tZoR|e;T0~N`z%dUVU5Fx8?`?P zDFtE-9DiO|W@BrON4s}9y0l7`wE&pz9A;zx7D=N-UrmfXcKTAi`{3md3TRJ?$?`uf z^44=L?TkOU@}gWg_X4L*ev0YoIbuu*4r3e;3BhBGC9@e|n4X^D=B@AXsZUM$`rjdKMqFWB3E#O2R?g=^RU0Wp?Ndy34q`O#Bf5D_6I z-=1AOarJ#2Fw;v;G=9ToZee-hEJx-(ff0*HhRX_^%h5C zZ+{zWavnc@k+-h>6LYi2Faji{i4B8lM|{`KD=@|)Vn|UaD^F1r^afjq0V9q) zZ(*#%T7$6`n`Jaj&5ytE6>i`8H@q+D_Vze-bcJ4jiy|Kgs>1t*naRV9k5A!T8-Iw{%#ynT zG*MPPP{^{DBH~azmZcaSB3P5*LrvN5@o@77#u%PF_aZ;`)aQsXa(n%4=4O|;^z={i zFaP>Y)^5MWbI<+^)@Fpd!I(tRDmb}(fg&G6Q$R_i7;vs2gwbS9ny}U;5y_0rW;4K| z>IK8Y&3EZ^CV1|dFHsaNs(-4c*BdZDKgXT>*O;1|r)e54KmTRc*WcyuU->%6k6vKq z#4747Erc%LxFf6yO+rNZ>|3=4-&vbnX+oqKPiDKRm=h={U&?;3{=9e<{-Yf=(aBO!Xc zuR)bNJJ+HQ6-_mG*#IG>uvO{+$km64wK)P9W3eWuDhC`rdV*emn|^ z_a9#8${XM0sdJy_?3vG!;>agPt^iFF@ZNLj=`V2e)(^P9aep0@1KS=Ap%g7=(+u7L*^$|5Xl%tMj>|=F$O&tx$V{@);LrX2g!_-0>&6bplLj+fh@CJzxiF1 z#G{>i+}VGN{q7ba_;1(M;P>!#^TR+g*jW3;nEcwHe1D|3_g+6pJ%JEPLX1@9kinow z)0D&*@S!HehPo~p4u@3L0Ph23S>k<72%ZoFNh5PJ%P<9dy@$jY?^MIyuQTlSK9C9B z#M~8){^tkvUfvCR%#SUT(ufBi8e)p0;=VcH#1leu&~{6R9#ti2B1MmCWOr|qee;kz z_ufQd(0|m!ucjEjO=!{w1o-~mdOkk)4k>(bFx<^I%iGM29m9-{&qz#4XaZGF2#FX+ zaD^BU1PBD*;6tQ8*kir>2HQJp#H9VID!=OM@@2|i^&d6=$9uuVV<(^26#hh$E}JZ4 zX?~UE*$X(^MpQ6nB*=(>q!FMZKteUqgdz9#u7B}h`yG7nMAB{F)W6Y`gTJKg)&I5D zhhELb4j=!E;On0j5p3pYbtZ5{fio>S#SCa7rGzz(Dh?P_JNRly@}t2Mf+r#0ss`Pk z1!~Hk{`VUH=iRWiaQsDL`0W(Kvto=0pnyFHq9b=p7%>N)kr0t!Z1#7?X1_Ifxc2IY z?LhyLZ^y0qW7BB-6;z)~F)c$nq>u|FkbuaJh`cMtykczrN5hS^-bdN@-vLcbZ88$+ R*>nH^002ovPDHLkV1oSu%d!9f delta 2547 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 JPDHLkV1j)(@zwwU diff --git a/data/images/tiles.strf b/data/images/tiles.strf index 2c92e3fe5a..9d021252df 100644 --- a/data/images/tiles.strf +++ b/data/images/tiles.strf @@ -21,7 +21,7 @@ ;; next-id: 7949 ;; free/skipped ids (please use before any other): - ;; 4639-4660, 5061-5089, 5268-5283, 5453-5527 + ;; 4641-4660, 5061-5089, 5268-5283, 5453-5527 ;; No group ids are currently skipped! Delete this line if any are and replace it with said ids... (tilegroup @@ -1429,8 +1429,9 @@ 102 140 3161 3162 104 105 3160 7026 3037 2943 2944 2945 - 2946 112 1311 7394 - 7396 7397 7398 7395 + 2946 4640 112 1311 + 7394 7396 7397 7398 + 7395 0 0 0 57 58 2841 2842 59 60 2843 2844 @@ -2143,6 +2144,29 @@ (fps 15) ) + (tile + (id 4640) + (images + "objects/bonus_block/full-0.png" + "objects/bonus_block/full-1.png" + "objects/bonus_block/full-2.png" + "objects/bonus_block/full-3.png" + "objects/bonus_block/full-4.png" + "objects/bonus_block/full-3.png" + "objects/bonus_block/full-2.png" + "objects/bonus_block/full-1.png" + "objects/bonus_block/full-0.png" + "objects/bonus_block/full-0.png" + "objects/bonus_block/full-0.png" + ) + (solid #t) + (object-name "bonusblock") + (object-data "(sprite \"images/objects/bonus_block/bonusblock.sprite\") (data 18)") + (editor-images "objects/bonus_block/malus-badegg.png") + (data 18) + (fps 15) + ) + (tile (id 1) (images diff --git a/src/object/bonus_block.cpp b/src/object/bonus_block.cpp index 89e0095ec6..a5aede019d 100644 --- a/src/object/bonus_block.cpp +++ b/src/object/bonus_block.cpp @@ -250,7 +250,7 @@ BonusBlock::get_content_by_data(int tile_data) const case 15: return Content::LIGHT_ON; case 16: return Content::RETROGROW; case 17: return Content::RETROSTAR; - // TODO add a tile for BADEGG + case 18: return Content::BADEGG; default: log_warning << "Invalid box contents" << std::endl; return Content::COIN; diff --git a/src/object/growup.cpp b/src/object/growup.cpp index fe66d21f2e..e35aaada07 100644 --- a/src/object/growup.cpp +++ b/src/object/growup.cpp @@ -25,12 +25,17 @@ #include "sprite/sprite_manager.hpp" GrowUp::GrowUp(BonusType type, const Vector& pos, Direction direction, const std::string& custom_sprite) : - m_type(type), - m_default_sprite((type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite"), - MovingSprite(pos, custom_sprite.empty() ? ((type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite") : custom_sprite, LAYER_OBJECTS, COLGROUP_MOVING), + MovingSprite(pos, + !custom_sprite.empty() ? custom_sprite : + (type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : + "images/powerups/badegg/badegg.sprite", + LAYER_OBJECTS, COLGROUP_MOVING + ), + m_growup_type(type), + m_growup_default_sprite((m_growup_type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite"), m_physic(), m_custom_sprite(!custom_sprite.empty()), - m_shadesprite(SpriteManager::current()->create((type == BONUS_GROWUP) ? "images/powerups/egg/egg.sprite" : "images/powerups/badegg/badegg.sprite")), + m_shadesprite(SpriteManager::current()->create(m_growup_default_sprite)), m_lightsprite(SpriteManager::current()->create("images/objects/lightmap_light/lightmap_light-small.sprite")) { m_physic.enable_gravity(true); @@ -39,7 +44,7 @@ GrowUp::GrowUp(BonusType type, const Vector& pos, Direction direction, const std m_shadesprite->set_action("shadow"); // Configure the light sprite for the glow effect. m_lightsprite->set_blend(Blend::ADD); - if (m_type == BONUS_GROWUP) { + if (m_growup_type == BONUS_GROWUP) { m_lightsprite->set_color(Color(0.2f, 0.2f, 0.0f)); SoundManager::current()->preload("sounds/grow.ogg"); } else { @@ -91,7 +96,7 @@ GrowUp::collision(MovingObject& other, const CollisionHit& hit ) { auto player = dynamic_cast(&other); if (player != nullptr) { - if (m_type == BONUS_GROWUP) { + if (m_growup_type == BONUS_GROWUP) { if (!player->add_bonus(BONUS_GROWUP, true)) { // Tux can't grow right now. collision_solid( hit ); diff --git a/src/object/growup.hpp b/src/object/growup.hpp index a381786756..7ddf5c4a2c 100644 --- a/src/object/growup.hpp +++ b/src/object/growup.hpp @@ -40,8 +40,8 @@ class GrowUp final : public MovingSprite private: Physic m_physic; - BonusType m_type; - std::string m_default_sprite; + BonusType m_growup_type; + std::string m_growup_default_sprite; const bool m_custom_sprite; SpritePtr m_shadesprite; SpritePtr m_lightsprite;