parent
24d36da0ab
commit
51a3feb5b6
@ -0,0 +1,75 @@ |
||||
#pragma region License |
||||
/*
|
||||
License (OLC-3) |
||||
~~~~~~~~~~~~~~~ |
||||
|
||||
Copyright 2024 Joshua Sigona <sigonasr2@gmail.com> |
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
|
||||
1. Redistributions or derivations of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions or derivative works in binary form must reproduce the above |
||||
copyright notice. This list of conditions and the following disclaimer must be |
||||
reproduced in the documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may |
||||
be used to endorse or promote products derived from this software without specific |
||||
prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
||||
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
SUCH DAMAGE. |
||||
|
||||
Portions of this software are copyright © 2024 The FreeType |
||||
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||
All rights reserved. |
||||
*/ |
||||
#pragma endregion |
||||
|
||||
#include "BulletTypes.h" |
||||
|
||||
GhostSaber::GhostSaber(const vf2d pos,const std::weak_ptr<Monster>target,const float lifetime,const float distFromTarget,const float knockbackAmt,const float initialRot,const float radius,const int damage,const bool upperLevel,const float rotSpd,const bool friendly,const Pixel col,const vf2d scale,const float image_angle) |
||||
:Bullet(target.lock()->GetPos()+vf2d{distFromTarget,initialRot}.cart(),{},radius,damage,"ghost_dagger.png",upperLevel,false,INFINITE,false,friendly,col,scale,image_angle),attachedMonster(target),rotSpd(rotSpd),distFromTarget(distFromTarget),rot(initialRot),aliveTime(lifetime),knockbackAmt(knockbackAmt){} |
||||
void GhostSaber::Update(float fElapsedTime){ |
||||
alphaOscillator.Update(fElapsedTime); |
||||
particleTimer-=fElapsedTime; |
||||
aliveTime-=fElapsedTime; |
||||
if(particleTimer<=0.f){ |
||||
particleTimer+=0.05f; |
||||
game->AddEffect(std::make_unique<ShineEffect>(pos,0.1f,0.1f,"pixel.png",2.f,vf2d{},Pixel{239,215,98,192},util::random(2*PI),0.f,true)); |
||||
} |
||||
rot+=rotSpd*fElapsedTime; |
||||
if(!attachedMonster.expired()){ |
||||
pos=attachedMonster.lock()->GetPos()+vf2d{distFromTarget,rot}.cart(); |
||||
} |
||||
if(aliveTime<=0.f&&!IsDeactivated()){ |
||||
Deactivate(); |
||||
fadeOutTime=0.5f; |
||||
} |
||||
col.a=alphaOscillator.get(); |
||||
image_angle=-rot*2; |
||||
}; |
||||
|
||||
BulletDestroyState GhostSaber::PlayerHit(Player*player){ |
||||
player->ApplyIframes(0.2f); |
||||
player->Knockback(vf2d{knockbackAmt,rot}.cart()); |
||||
return BulletDestroyState::KEEP_ALIVE; |
||||
} |
||||
|
||||
BulletDestroyState GhostSaber::MonsterHit(Monster&monster,const uint8_t markStacksBeforeHit){ |
||||
monster.ApplyIframes(0.2f); |
||||
monster.Knockback(vf2d{knockbackAmt,rot}.cart()); |
||||
return BulletDestroyState::KEEP_ALIVE; |
||||
} |
||||
|
||||
void GhostSaber::ModifyOutgoingDamageData(HurtDamageInfo&data){} |
Binary file not shown.
After Width: | Height: | Size: 8.8 KiB |
Binary file not shown.
Loading…
Reference in new issue