From f365e342a215cd7022e6bc810173485e7ba88445 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Tue, 29 Aug 2023 05:39:30 -0500 Subject: [PATCH] Add in Procedure stat mechanics and proc chances. --- olcCodeJam2023Entry/Unit.cpp | 23 +++++++++++++++-------- olcCodeJam2023Entry/Unit.h | 1 + olcCodeJam2023Entry/assets/prc_icon.png | Bin 0 -> 752 bytes olcCodeJam2023Entry/assets/rld_icon.png | Bin 0 -> 666 bytes olcCodeJam2023Entry/assets/rng_icon.png | Bin 0 -> 707 bytes olcCodeJam2023Entry/assets/spd_icon.png | Bin 0 -> 691 bytes 6 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 olcCodeJam2023Entry/assets/prc_icon.png create mode 100644 olcCodeJam2023Entry/assets/rld_icon.png create mode 100644 olcCodeJam2023Entry/assets/rng_icon.png create mode 100644 olcCodeJam2023Entry/assets/spd_icon.png diff --git a/olcCodeJam2023Entry/Unit.cpp b/olcCodeJam2023Entry/Unit.cpp index 23c2ea0..7ee4257 100644 --- a/olcCodeJam2023Entry/Unit.cpp +++ b/olcCodeJam2023Entry/Unit.cpp @@ -345,7 +345,7 @@ void Unit::DrawUnitDamageStats(PixelGameEngine*pge,TileTransformedView&game,std: if(reloadTimer>0){ util::ApplyMatrixEffect(game.GetPGE(),attackingLine,*IMAGES[ATTACKING_LINE],IMAGES[MATRIX]); float reloadSpd=1.f/(GetAtkSpd()/2.f); - game.DrawPartialRotatedDecal(lineToTarget.upoint(0.5),attackingLine.Decal(),lineToTarget.vector().polar().y,{lineToTarget.length()/2,12},{lineShift*30,0},{lineToTarget.length(),24},{1,1+(reloadTimer/reloadSpd)*0.25f},{attackingLineCol.r,attackingLineCol.g,attackingLineCol.b,uint8_t(IsFriendly()?200:160)}); + game.DrawPartialRotatedDecal(lineToTarget.upoint(0.5),attackingLine.Decal(),lineToTarget.vector().polar().y,{lineToTarget.length()/2,12},{lineShift*30,0},{lineToTarget.length(),24},{1,1+(attackFailed?-0.3f:(reloadTimer/reloadSpd)*0.25f)},attackFailed?Pixel{192,192,192,130}:Pixel{attackingLineCol.r,attackingLineCol.g,attackingLineCol.b,uint8_t(IsFriendly()?200:160)}); } } float dist=geom2d::line(game.ScreenToWorld(pge->GetMousePos()),GetGhostPos()).length(); @@ -564,14 +564,21 @@ void Unit::_Attacked(std::weak_ptrattacker){ } void Unit::_Attack(std::weak_ptrattacker,std::weak_ptrfinalTarget,std::vector>&otherUnits){ - if(GetAtkSpd()>0){ - Attack(*finalTarget.lock(),otherUnits); - finalTarget.lock()->_Attacked(attacker); - reloadTimer=1.f/(GetAtkSpd()/2.f); - if(GetCurrentTarget().expired()&&!IsFriendly()){ - if(finalTarget.lock()->IsFriendly()!=IsFriendly()&&CanInteractWithEnemies()){ - SetTargetUnit(finalTarget); + if(GetProcedure()>0&&GetAtkSpd()>0){ + attackFailed=false; + float procChance=float(GetProcedure())/procedure.size; + if(util::random(1)>=1-procChance){ + Attack(*finalTarget.lock(),otherUnits); + finalTarget.lock()->_Attacked(attacker); + reloadTimer=1.f/(GetAtkSpd()/2.f); + if(GetCurrentTarget().expired()&&!IsFriendly()){ + if(finalTarget.lock()->IsFriendly()!=IsFriendly()&&CanInteractWithEnemies()){ + SetTargetUnit(finalTarget); + } } + } else { + reloadTimer=1.f/(GetAtkSpd()/2.f); + attackFailed=true; } } } diff --git a/olcCodeJam2023Entry/Unit.h b/olcCodeJam2023Entry/Unit.h index 1151c49..69d26c7 100644 --- a/olcCodeJam2023Entry/Unit.h +++ b/olcCodeJam2023Entry/Unit.h @@ -107,6 +107,7 @@ protected: bool InRange(Unit*target); bool InRange(vf2d pos); float reloadTimer=0; + bool attackFailed=false; bool autoAcquireFriendlyTarget=true; private: Renderable targetingLine; diff --git a/olcCodeJam2023Entry/assets/prc_icon.png b/olcCodeJam2023Entry/assets/prc_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bc4439677f5f4eba0fa4843a4d511ceba53a29fd GIT binary patch literal 752 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 Z8b32~PM-$k?3e%m002ovPDHLkV1nvuD|7$= literal 0 HcmV?d00001