parent
8e8e145403
commit
1655fe7b51
@ -0,0 +1,23 @@ |
|||||||
|
Wolf |
||||||
|
HP: 110 |
||||||
|
Atk: 12 |
||||||
|
Move-Spd: 120% |
||||||
|
Size: 90% |
||||||
|
Strategie: Runs Towards Player, in 400 range it locks on current player position and charges that position with additional 15% move speed. |
||||||
|
After Attack 1 second not doing anything. |
||||||
|
After that move speed increases by 30% and it disengages on an 800 range where it circles around the player for 3 seconds. after that time move speed resets to normal and it attacks again. |
||||||
|
|
||||||
|
Bear |
||||||
|
HP: 210 |
||||||
|
Atk: 45 |
||||||
|
Move-Spd: 60% |
||||||
|
Size: 200% |
||||||
|
Strategie: Moves towards player. Once next to the Player character builds itself up and smashes the ground infront of him. 2 seconds time to dodge attack once it locks the area its attacking. |
||||||
|
|
||||||
|
Frog |
||||||
|
HP: 60 |
||||||
|
Atk: 15 |
||||||
|
Move-Spd: 70% |
||||||
|
Size: 70% |
||||||
|
Strategie: Moves with small jumps. if range to player is 350 or lower locks on to player and keep facing its direction without moving for the next 1.5 seconds it will attack the position the player was last in this time frame with another 1 seconds delay. Tongue max range: 450 |
||||||
|
after attack 0.5 seconds doing nothing then starts again closing the gap or prepares for an attack again depending if range is bigger then 350 again. |
@ -0,0 +1,86 @@ |
|||||||
|
#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 © 2023 The FreeType |
||||||
|
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||||
|
All rights reserved. |
||||||
|
*/ |
||||||
|
#pragma endregion |
||||||
|
|
||||||
|
#include "BulletTypes.h" |
||||||
|
#include "AdventuresInLestoria.h" |
||||||
|
#include "util.h" |
||||||
|
|
||||||
|
INCLUDE_game |
||||||
|
INCLUDE_MONSTER_LIST |
||||||
|
INCLUDE_GFX |
||||||
|
|
||||||
|
FrogTongue::FrogTongue(vf2d pos,vf2d targetPos,float lifetime,int damage,bool upperLevel,bool friendly,Pixel col) |
||||||
|
:Bullet(pos,{},0,damage,upperLevel,friendly,col),targetPos(targetPos),tongueSpd(tongueSpd),tongueLength(0.f){ |
||||||
|
this->lifetime=lifetime; |
||||||
|
duration=lifetime; |
||||||
|
} |
||||||
|
void FrogTongue::Update(float fElapsedTime){ |
||||||
|
geom2d::line<float>lineToTarget(pos,targetPos); |
||||||
|
|
||||||
|
tongueLength=util::lerp(0,lineToTarget.length(),sin((lifetime*PI)/duration)); |
||||||
|
|
||||||
|
if(!friendly&&geom2d::overlaps(game->GetPlayer()->Hitbox(),lineToTarget)){ |
||||||
|
PlayerHit(game->GetPlayer()); |
||||||
|
} |
||||||
|
if(friendly){ |
||||||
|
for(Monster&m:MONSTER_LIST){ |
||||||
|
if(geom2d::overlaps(m.Hitbox(),lineToTarget)){ |
||||||
|
MonsterHit(m); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
bool FrogTongue::PlayerHit(Player*player){ |
||||||
|
player->Hurt(damage,OnUpperLevel(),0); |
||||||
|
deactivated=true; |
||||||
|
return false; |
||||||
|
} |
||||||
|
bool FrogTongue::MonsterHit(Monster&monster){ |
||||||
|
monster.Hurt(damage,OnUpperLevel(),0); |
||||||
|
deactivated=true; |
||||||
|
return false; |
||||||
|
} |
||||||
|
void FrogTongue::Draw(){ |
||||||
|
geom2d::line<float>lineToTarget(pos,targetPos); |
||||||
|
vf2d drawVec=lineToTarget.vector().norm()*3; |
||||||
|
|
||||||
|
vf2d tongueEndPos=geom2d::line<float>(pos+drawVec,targetPos).upoint(sin((lifetime*PI)/duration)); |
||||||
|
|
||||||
|
game->view.DrawRotatedDecal(pos+drawVec,GFX["tongue.png"].Decal(),drawVec.polar().y,{0.f,1.f},{tongueLength,1.0f},col); |
||||||
|
game->view.DrawRotatedDecal(tongueEndPos,GFX["tongue_end.png"].Decal(),drawVec.polar().y,{2.f,2.f},{1.f,1.f},col); |
||||||
|
} |
Before Width: | Height: | Size: 739 B After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 904 B After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 513 B |
After Width: | Height: | Size: 550 B |
Loading…
Reference in new issue