Compare commits
No commits in common. 'fdef405ed8375a58ccb29013591e2001daa5df06' and '95e51f2324bb66c3e0ad4b9ebf00ef399a801748' have entirely different histories.
fdef405ed8
...
95e51f2324
@ -1,75 +0,0 @@ |
|||||||
#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.
Before Width: | Height: | Size: 8.8 KiB |
Binary file not shown.
Loading…
Reference in new issue