13 #include "../../bscript/berror.h" 14 #include "../../bscript/bobject.h" 15 #include "../../bscript/impstr.h" 16 #include "../cmbtcfg.h" 17 #include "../globals/settings.h" 18 #include "../mobile/attribute.h" 19 #include "../mobile/charactr.h" 20 #include "../spells.h" 22 #include "../uoexhelp.h" 29 using namespace Module;
47 using namespace Bscript;
59 int send_damage_packet;
61 getParam( 3, send_damage_packet ) && damage >= 0 && damage <= USHRT_MAX )
64 : ( send_damage_packet > 0 ?
true : false );
66 userepsys > 0 ?
true :
false, send_dmg );
67 return new BLong( 1 );
70 return new BLong( 0 );
78 int send_damage_packet;
82 if ( damage >= 0.0 && damage <= 30000.0 )
84 bool send_dmg = send_damage_packet == 2
86 : ( send_damage_packet > 0 ?
true : false );
88 userepsys > 0 ?
true :
false, send_dmg );
89 return new BLong( static_cast<int>( damage ) );
92 return new BError(
"Damage is out of range" );
95 return new BError(
"Invalid parameter type" );
103 amount <= USHRT_MAX )
110 return new BLong( 1 );
114 return new BError(
"Invalid parameter" );
125 return new BError(
"Spell ID out of range" );
128 if ( spell ==
nullptr )
129 return new BError(
"No such spell" );
131 return new BLong( 0 );
137 return new BLong( 1 );
141 return new BError(
"Invalid parameter" );
151 return new BError(
"Invalid parameter type." );
168 return new BError(
"Invalid parameter type" );
182 return new BError(
"Invalid parameter type" );
196 return new BError(
"Invalid parameter type" );
210 return new BLong( 1 );
213 return new BError(
"Invalid parameter type" );
226 bool res = chr->
consume( vital, vv, hundredths );
227 return new BLong( res ? 1 : 0 );
230 return new BError(
"Invalid parameter type" );
243 bool calc_attr =
false;
244 bool calc_vital =
false;
247 calc_attr = static_cast<BLong*>( param1 )->isTrue();
252 if ( attr ==
nullptr )
253 return new BError(
"Attribute not defined: " + attrname->
value() );
257 return new BError(
"Invalid parameter type" );
260 calc_vital = static_cast<BLong*>( param2 )->isTrue();
265 if ( vital ==
nullptr )
266 return new BError(
"Vital not defined: " + vitalname->
value() );
270 return new BError(
"Invalid parameter type" );
273 return new BLong( 1 );
276 return new BError(
"Mobile must be online." );
279 return new BError(
"Invalid parameter type" );
const std::string & value() const
std::vector< FunctionDef > FunctionTable
Vital * FindVital(const std::string &str)
VitalExecutorModule(Bscript::Executor &exec)
Bscript::BObjectImp * mf_ApplyDamage()
bool getRealParam(unsigned param, double &value)
bool isa(BObjectType type) const
void send_mana_level(Client *client)
Bscript::BObjectImp * mf_ConsumeMana()
Bscript::BObjectImp * mf_ConsumeVital()
bool getParam(unsigned param, int &value)
void calc_single_attribute(const Attribute *pAttr)
Bscript::BObjectImp * mf_GetVital()
virtual void repsys_on_help(Character *recipient)
[15] Mobile (MA) Helps Mobile (MB)
void heal_damage_hundredths(unsigned int damage)
When a Mobile is Healed.
void calc_vital_stuff(bool i_mod=true, bool v_mod=true)
bool has_active_client() const
BObjectImp * getParamImp(unsigned param)
Bscript::BObjectImp * mf_GetVitalName()
bool consume(const Core::Vital *pVital, VitalValue &vv, unsigned int amt)
bool getVitalParam(Executor &exec, unsigned param, const Vital *&vital)
bool getCharacterParam(Bscript::Executor &exec, unsigned param, Mobile::Character *&chrptr)
void consume_mana(Mobile::Character *chr)
Bscript::BObjectImp * mf_HealDamage()
bool check_mana(Mobile::Character *chr)
Bscript::BObjectImp * mf_RecalcVitals()
Bscript::BObjectImp * mf_GetVitalMaximumValue()
void calc_single_vital(const Core::Vital *pVital)
std::vector< USpell * > spells
SettingsManager settingsManager
CombatConfig combat_config
Bscript::BObjectImp * mf_ApplyRawDamage()
double apply_damage(double damage, Character *source=nullptr, bool userepsys=true, bool send_damage_packet=false)
Mobile::Character * GetUOController()
Bscript::BObjectImp * mf_SetVital()
virtual void apply_raw_damage_hundredths(unsigned int damage, Character *source, bool userepsys=true, bool send_damage_packet=false)
const VitalValue & vital(unsigned vitalid) const
Bscript::BObjectImp * mf_GetVitalRegenRate()
void set_current(const Core::Vital *pVital, VitalValue &vv, unsigned int ones)
static Attribute * FindAttribute(const std::string &str)
bool VALID_SPELL_ID(int spellid)
const unsigned int VITAL_MAX_HUNDREDTHS