1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 06:27:45 +00:00

add single target damage to actions

This commit is contained in:
NotAdam 2019-02-10 23:53:44 +11:00
parent f07a743511
commit 0c3cdf959e
2 changed files with 10 additions and 1 deletions

View file

@ -1,6 +1,7 @@
#include <Script/NativeScriptApi.h> #include <Script/NativeScriptApi.h>
#include <ScriptObject.h> #include <ScriptObject.h>
#include <Actor/Player.h> #include <Actor/Player.h>
#include <Action/Action.h>
class ActionHeavyShot97 : class ActionHeavyShot97 :
public Sapphire::ScriptAPI::ActionScript public Sapphire::ScriptAPI::ActionScript
@ -20,7 +21,7 @@ public:
void onCharaHit( Sapphire::Entity::Chara& sourceActor, Sapphire::Entity::Chara& hitActor, void onCharaHit( Sapphire::Entity::Chara& sourceActor, Sapphire::Entity::Chara& hitActor,
Sapphire::Action::Action& currentAction ) override Sapphire::Action::Action& currentAction ) override
{ {
currentAction.damageTarget( 100, hitActor );
} }
}; };

View file

@ -242,7 +242,9 @@ void Sapphire::Action::Action::onFinish()
if( !hasResidentTarget() ) if( !hasResidentTarget() )
{ {
assert( m_pTarget );
// todo: calculate final hit targets and call onCharaHit in action script // todo: calculate final hit targets and call onCharaHit in action script
pScriptMgr->onCharaHit( *m_pSource, *m_pTarget, *this );
} }
else else
{ {
@ -286,6 +288,9 @@ void Sapphire::Action::Action::damageTarget( uint32_t amount, Entity::Chara& cha
// todo: aspected damage? // todo: aspected damage?
chara.takeDamage( amount ); chara.takeDamage( amount );
if( auto player = m_pSource->getAsPlayer() )
player->sendDebug( "hit actorId#{0} for damage: {1}", chara.getId(), amount );
m_effects[ EffectPacketIdentity::DamageEffect ].m_entries.emplace_back( entry ); m_effects[ EffectPacketIdentity::DamageEffect ].m_entries.emplace_back( entry );
// todo: make sure that we don't add the same actor more than once // todo: make sure that we don't add the same actor more than once
@ -313,6 +318,9 @@ void Sapphire::Action::Action::healTarget( uint32_t amount, Entity::Chara& chara
chara.heal( amount ); chara.heal( amount );
if( auto player = m_pSource->getAsPlayer() )
player->sendDebug( "hit actorId#{0} for heal: {1}", chara.getId(), amount );
m_effects[ EffectPacketIdentity::HealingEffect ].m_entries.emplace_back( entry ); m_effects[ EffectPacketIdentity::HealingEffect ].m_entries.emplace_back( entry );
// todo: make sure that we don't add the same actor more than once // todo: make sure that we don't add the same actor more than once