Horizon Official Technical Documentation
Status.hpp
Go to the documentation of this file.
1/***************************************************
2 * _ _ _ *
3 * | | | | (_) *
4 * | |_| | ___ _ __ _ _______ _ __ *
5 * | _ |/ _ \| '__| |_ / _ \| '_ \ *
6 * | | | | (_) | | | |/ / (_) | | | | *
7 * \_| |_/\___/|_| |_/___\___/|_| |_| *
8 ***************************************************
9 * This file is part of Horizon (c).
10 *
11 * Copyright (c) 2019 Sagun K. (sagunxp@gmail.com).
12 * Copyright (c) 2019 Horizon Dev Team.
13 *
14 * Base Author - Sagun K. (sagunxp@gmail.com)
15 *
16 * This library is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation, either version 3 of the License, or
19 * (at your option) any later version.
20 *
21 * This library is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this library. If not, see <http://www.gnu.org/licenses/>.
28 **************************************************/
29
30#ifndef HORIZON_ZONE_GAME_TRAITS_STATUS_HPP
31#define HORIZON_ZONE_GAME_TRAITS_STATUS_HPP
32
38
39#include <ctime>
40#include <queue>
41#include <algorithm>
42#include <memory>
43#include <vector>
44
45 // Linux
46
47struct item_entry_data;
49struct job_config_data;
50
51namespace Horizon
52{
53namespace Zone
54{
55class Unit;
56namespace Units
57{
58 class Player;
59 class NPC;
60 class Mob;
61}
62namespace Traits
63{
64class Status
65{
66public:
68 {
69 public:
71 {
90 };
91
93 {
94 public:
95 StatusOperation(Attribute *attribute, status_operation_type type, uint32_t value, std::string source)
96 : _priority(std::time(nullptr)), _attribute(attribute), _type(type), _value(value), _source(source) { }
97 StatusOperation(Attribute *attribute, status_operation_type type, uint32_t value, uint64_t duration, std::string source)
98 : _priority(std::time(nullptr)), _attribute(attribute), _type(type), _value(value), _duration(duration), _source(source) { }
99 StatusOperation(Attribute *attribute, status_operation_type type, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
100 : _priority(std::time(nullptr)), _attribute(attribute), _type(type), _value(value), _minmax(minmax), _duration(duration), _interval(interval), _source(source) { }
101
102 virtual ~StatusOperation() {}
103
104 void execute();
105
106 uint16_t get_priority() { return _priority; }
107 void set_priority(uint16_t priority) { _priority = priority; }
108
110 uint16_t get_value() { return _value; }
111
112 void set_duration(uint64_t duration) { _duration = duration; }
113 uint64_t get_duration() { return _duration; }
114
115 void set_interval(uint64_t interval) { _interval = interval; }
116 uint64_t get_interval() { return _interval; }
117
118 void set_source(const std::string &source) { _source = source; }
119 std::string get_source() { return _source; }
120
121 protected:
124 uint32_t _value{0};
126 uint16_t _priority{0};
127 uint64_t _duration{0};
128 uint64_t _interval{0};
129 std::string _source{""};
130 };
131
132 // Define a comparison function for the priority queue
135 return op1->get_priority() < op2->get_priority();
136 }
137 };
138
139 void add_to_base(Attribute *attribute, uint32_t value, std::string source);
140 void subtract_from_base(Attribute *attribute, uint32_t value, std::string source);
141 void add_to_equip(Attribute *attribute, uint32_t value, std::string source);
142 void subtract_from_equip(Attribute *attribute, uint32_t value, std::string source);
143 void add_to_status(Attribute *attribute, uint32_t value, std::string source);
144 void subtract_from_status(Attribute *attribute, uint32_t value, std::string source);
145
146 void add_to_base_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source);
147 void sub_from_base_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source);
148 void add_to_equip_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source);
149 void sub_from_equip_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source);
150 void add_to_status_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source);
151 void sub_from_status_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source);
152
153 void add_to_base_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source);
154 void sub_from_base_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source);
155 void add_to_equip_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source);
156 void sub_from_equip_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source);
157 void add_to_status_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source);
158 void sub_from_status_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source);
159
160 bool has_next_operation() { return !_status_operation_queue.empty(); }
162 void process_queue();
163
164 protected:
165 std::priority_queue<StatusOperation *, std::vector<StatusOperation *>, CompareStatusOperation> _status_operation_queue;
166 };
167
168 Status(std::weak_ptr<Unit> unit, unit_type type);
169 ~Status();
170
171 bool initialize(std::shared_ptr<Horizon::Zone::Units::Mob> creature, std::shared_ptr<const monster_config_data> md);
172 bool initialize(std::shared_ptr<Horizon::Zone::Units::Player> player);
173 bool initialize(std::shared_ptr<Horizon::Zone::Units::NPC> npc);
174
175 uint32_t get_required_statpoints(uint16_t from, uint16_t to);
176 uint32_t get_status_base(status_point_type type);
177 bool increase_status_point(status_point_type type, uint16_t amount);
178
179 bool save(std::shared_ptr<Horizon::Zone::Units::Player> pl);
180 bool load(std::shared_ptr<Horizon::Zone::Units::Player> pl);
181
182 void on_equipment_changed(bool equipped, std::shared_ptr<const item_entry_data> item);
183 void on_job_changed(uint32_t job_id);
184
188 std::shared_ptr<Strength> strength() { return _str; }
189 void set_strength(std::shared_ptr<Strength> str) {
190 if (_str != nullptr)
192 add_attribute(str);
193 _str = str;
194 }
195
196 std::shared_ptr<Agility> agility() { return _agi; }
197 void set_agility(std::shared_ptr<Agility> agi) {
198 if (_agi != nullptr)
200 add_attribute(agi);
201 _agi = agi;
202 }
203
204 std::shared_ptr<Vitality> vitality() { return _vit; }
205 void set_vitality(std::shared_ptr<Vitality> vit) {
206 if (_vit != nullptr)
208 add_attribute(vit);
209 _vit = vit;
210 }
211
212 std::shared_ptr<Dexterity> dexterity() { return _dex; }
213 void set_dexterity(std::shared_ptr<Dexterity> dex) {
214 if (_dex != nullptr)
216 add_attribute(dex);
217 _dex = dex;
218 }
219
220 std::shared_ptr<Intelligence> intelligence() { return _int; }
221 void set_intelligence(std::shared_ptr<Intelligence> int_) {
222 if (_int != nullptr)
224 add_attribute(int_);
225 _int = int_;
226 }
227
228 std::shared_ptr<Luck> luck() { return _luk; }
229 void set_luck(std::shared_ptr<Luck> luck) {
230 if (_luk != nullptr)
233 _luk = luck;
234 }
235
236 std::shared_ptr<StrengthPointCost> strength_cost() { return _str_cost; }
237 void set_strength_cost(std::shared_ptr<StrengthPointCost> str) {
238 if (_str_cost != nullptr)
240 add_attribute(str);
241 _str_cost = str;
242 }
243
244 std::shared_ptr<AgilityPointCost> agility_cost() { return _agi_cost; }
245 void set_agility_cost(std::shared_ptr<AgilityPointCost> agi) {
246 if (_agi_cost != nullptr)
248 add_attribute(agi);
249 _agi_cost = agi;
250 }
251
252 std::shared_ptr<VitalityPointCost> vitality_cost() { return _vit_cost; }
253 void set_vitality_cost(std::shared_ptr<VitalityPointCost> vit) {
254 if (_vit_cost != nullptr)
256 add_attribute(vit);
257 _vit_cost = vit;
258 }
259
260 std::shared_ptr<DexterityPointCost> dexterity_cost() { return _dex_cost; }
261 void set_dexterity_cost(std::shared_ptr<DexterityPointCost> dex) {
262 if (_dex_cost != nullptr)
264 add_attribute(dex);
265 _dex_cost = dex;
266 }
267
268 std::shared_ptr<IntelligencePointCost> intelligence_cost() { return _int_cost; }
269 void set_intelligence_cost(std::shared_ptr<IntelligencePointCost> int_) {
270 if (_int_cost != nullptr)
272 add_attribute(int_);
273 _int_cost = int_;
274 }
275
276 std::shared_ptr<LuckPointCost> luck_cost() { return _luk_cost; }
277 void set_luck_cost(std::shared_ptr<LuckPointCost> luck) {
278 if (_luk_cost != nullptr)
281 _luk_cost = luck;
282 }
283
284 std::shared_ptr<StatusPoint> status_point() { return _status_point; }
285 void set_status_point(std::shared_ptr<StatusPoint> st) {
286 if (_status_point != nullptr)
288 add_attribute(st);
289 _status_point = st;
290 }
291
292 std::shared_ptr<SkillPoint> skill_point() { return _skill_point; }
293 void set_skill_point(std::shared_ptr<SkillPoint> sk) {
294 if (_skill_point != nullptr)
296 add_attribute(sk);
297 _skill_point = sk;
298 }
299
300 std::shared_ptr<MaxHP> max_hp() { return _max_hp; }
301 void set_max_hp(std::shared_ptr<MaxHP> max_hp) {
302 if (_max_hp != nullptr)
305 _max_hp = max_hp;
306 }
307
308 std::shared_ptr<MaxSP> max_sp() { return _max_sp; }
309 void set_max_sp(std::shared_ptr<MaxSP> max_sp) {
310 if (_max_sp != nullptr)
313 _max_sp = max_sp;
314 }
315
316 std::shared_ptr<CurrentHP> current_hp() { return _current_hp; }
317 void set_current_hp(std::shared_ptr<CurrentHP> hp) {
318 if (_current_hp != nullptr)
320 add_attribute(hp);
321 _current_hp = hp;
322 }
323
324 std::shared_ptr<CurrentSP> current_sp() { return _current_sp; }
325 void set_current_sp(std::shared_ptr<CurrentSP> sp) {
326 if (_current_sp != nullptr)
328 add_attribute(sp);
329 _current_sp = sp;
330 }
331
332 std::shared_ptr<BaseLevel> base_level() { return _base_level; }
333 void set_base_level(std::shared_ptr<BaseLevel> blvl) {
334 if (_base_level != nullptr)
336 add_attribute(blvl);
337 _base_level = blvl;
338 }
339
340 std::shared_ptr<JobLevel> job_level() { return _job_level; }
341 void set_job_level(std::shared_ptr<JobLevel> jlvl) {
342 if (_job_level != nullptr)
344 add_attribute(jlvl);
345 _job_level = jlvl;
346 }
347
348 std::shared_ptr<BaseExperience> base_experience() { return _base_exp; }
349 void set_base_experience(std::shared_ptr<BaseExperience> bexp) {
350 if (_base_exp != nullptr)
352 add_attribute(bexp);
353 _base_exp = bexp;
354 }
355
356 std::shared_ptr<JobExperience> job_experience() { return _job_exp; }
357 void set_job_experience(std::shared_ptr<JobExperience> jexp) {
358 if (_job_exp != nullptr)
360 add_attribute(jexp);
361 _job_exp = jexp;
362 }
363
364 std::shared_ptr<NextBaseExperience> next_base_experience() { return _next_base_exp; }
365 void set_next_base_experience(std::shared_ptr<NextBaseExperience> nbexp) {
366 if (_next_base_exp != nullptr)
368 add_attribute(nbexp);
369 _next_base_exp = nbexp;
370 }
371
372 std::shared_ptr<NextJobExperience> next_job_experience() { return _next_job_exp; }
373 void set_next_job_experience(std::shared_ptr<NextJobExperience> njexp) {
374 if (_next_job_exp != nullptr)
376 add_attribute(njexp);
377 _next_job_exp = njexp;
378 }
379
380 std::shared_ptr<MovementSpeed> movement_speed() { return _movement_speed; }
381 void set_movement_speed(std::shared_ptr<MovementSpeed> speed) {
382 if (_movement_speed != nullptr)
384 add_attribute(speed);
385 _movement_speed = speed;
386 }
387
388 std::shared_ptr<MaxWeight> max_weight() { return _max_weight; }
389 void set_max_weight(std::shared_ptr<MaxWeight> mw) {
390 if (_max_weight != nullptr)
392 add_attribute(mw);
393 _max_weight = mw;
394 }
395
396 std::shared_ptr<CurrentWeight> current_weight() { return _current_weight; }
397 void set_current_weight(std::shared_ptr<CurrentWeight> cw) {
398 if (_current_weight != nullptr)
400 add_attribute(cw);
401 _current_weight = cw;
402 }
403
404 std::shared_ptr<AttackRange> attack_range() { return _attack_range; }
405 void set_attack_range(std::shared_ptr<AttackRange> m) {
406 if (_attack_range != nullptr)
408 add_attribute(m);
409 _attack_range = m;
410 }
411
415 std::shared_ptr<StatusATK> status_atk() { return _status_atk; }
416 void set_status_atk(std::shared_ptr<StatusATK> satk) {
417 if (_status_atk != nullptr)
419 add_attribute(satk);
420 _status_atk = satk;
421 }
422
423 std::shared_ptr<EquipATK> equip_atk() { return _equip_atk; }
424 void set_equip_atk(std::shared_ptr<EquipATK> eatk) {
425 if (_equip_atk != nullptr)
427 add_attribute(eatk);
428 _equip_atk = eatk;
429 }
430
431 std::shared_ptr<StatusMATK> status_matk() { return _status_matk; }
432 void set_status_matk(std::shared_ptr<StatusMATK> smatk) {
433 if (_status_matk != nullptr)
435 add_attribute(smatk);
436 _status_matk = smatk;
437 }
438
439 std::shared_ptr<EquipMATK> equip_matk() { return _equip_matk; }
440 void set_equip_matk(std::shared_ptr<EquipMATK> ematk) {
441 if (_equip_matk != nullptr)
443 add_attribute(ematk);
444 _equip_matk = ematk;
445 }
446
447 std::shared_ptr<SoftDEF> soft_def() { return _soft_def; }
448 void set_soft_def(std::shared_ptr<SoftDEF> sdef) {
449 if (_soft_def != nullptr)
451 add_attribute(sdef);
452 _soft_def = sdef;
453 }
454
455 std::shared_ptr<HardDEF> hard_def() { return _hard_def; }
456 void set_hard_def(std::shared_ptr<HardDEF> hdef) {
457 if (_hard_def != nullptr)
459 add_attribute(hdef);
460 _hard_def = hdef;
461 }
462
463 std::shared_ptr<SoftMDEF> soft_mdef() { return _soft_mdef; }
464 void set_soft_mdef(std::shared_ptr<SoftMDEF> smdef) {
465 if (_soft_mdef != nullptr)
467 add_attribute(smdef);
468 _soft_mdef = smdef;
469 }
470
471 std::shared_ptr<HardMDEF> hard_mdef() { return _hard_mdef; }
472 void set_hard_mdef(std::shared_ptr<HardMDEF> hmdef) {
473 if (_hard_mdef != nullptr)
475 add_attribute(hmdef);
476 _hard_mdef = hmdef;
477 }
478
479 std::shared_ptr<HIT> hit() { return _hit; }
480 void set_hit(std::shared_ptr<HIT> hit) {
481 if (_hit != nullptr)
484 _hit = hit;
485 }
486
487 std::shared_ptr<CRIT> crit() { return _crit; }
488 void set_crit(std::shared_ptr<CRIT> crit) {
489 if (_crit != nullptr)
492 _crit = crit;
493 }
494
495 std::shared_ptr<FLEE> flee() { return _flee; }
496 void set_flee(std::shared_ptr<FLEE> flee) {
497 if (_flee != nullptr)
500 _flee = flee;
501 }
502
503 std::shared_ptr<AttackSpeed> attack_speed() { return _aspd; }
504 void set_attack_speed(std::shared_ptr<AttackSpeed> aspd) {
505 if (_aspd != nullptr)
507 add_attribute(aspd);
508 _aspd = aspd;
509 }
510
511 std::shared_ptr<HPRegeneration> hp_regeneration() { return _hp_regeneration; }
512 void set_hp_regeneration(std::shared_ptr<HPRegeneration> hpr) {
513 if (_hp_regeneration != nullptr)
515 add_attribute(hpr);
516 _hp_regeneration = hpr;
517 }
518
519 std::shared_ptr<SPRegeneration> sp_regeneration() { return _sp_regeneration; }
520 void set_sp_regeneration(std::shared_ptr<SPRegeneration> spr) {
521 if (_sp_regeneration != nullptr)
523 add_attribute(spr);
524 _sp_regeneration = spr;
525 }
526
530 std::shared_ptr<BaseAppearance> base_appearance() { return _base_appearance; }
531 void set_base_appearance(std::shared_ptr<BaseAppearance> ba) { add_appearance(ba); _base_appearance = ba; }
532
533 std::shared_ptr<HairColor> hair_color() { return _hair_color; }
534 void set_hair_color(std::shared_ptr<HairColor> hc) { add_appearance(hc); _hair_color = hc; }
535
536 std::shared_ptr<ClothColor> cloth_color() { return _cloth_color; }
537 void set_cloth_color(std::shared_ptr<ClothColor> cc) { add_appearance(cc); _cloth_color = cc; }
538
539 std::shared_ptr<WeaponSprite> weapon_sprite() { return _weapon_sprite; }
540 void set_weapon_sprite(std::shared_ptr<WeaponSprite> ws) { add_appearance(ws); _weapon_sprite = ws; }
541
542 std::shared_ptr<ShieldSprite> shield_sprite() { return _shield_sprite; }
543 void set_shield_sprite(std::shared_ptr<ShieldSprite> ss) { add_appearance(ss); _shield_sprite = ss; }
544
545 std::shared_ptr<RobeSprite> robe_sprite() { return _robe_sprite; }
546 void set_robe_sprite(std::shared_ptr<RobeSprite> rs) { add_appearance(rs); _robe_sprite = rs; }
547
548 std::shared_ptr<HeadTopSprite> head_top_sprite() { return _head_top_sprite; }
549 void set_head_top_sprite(std::shared_ptr<HeadTopSprite> hts) { add_appearance(hts); _head_top_sprite = hts; }
550
551 std::shared_ptr<HeadMidSprite> head_mid_sprite() { return _head_mid_sprite; }
552 void set_head_mid_sprite(std::shared_ptr<HeadMidSprite> hms) { add_appearance(hms); _head_mid_sprite = hms; }
553
554 std::shared_ptr<HeadBottomSprite> head_bottom_sprite() { return _head_bottom_sprite; }
555 void set_head_bottom_sprite(std::shared_ptr<HeadBottomSprite> hbs) { add_appearance(hbs); _head_bottom_sprite = hbs; }
556
557 std::shared_ptr<HairStyle> hair_style() { return _hair_style; }
558 void set_hair_style(std::shared_ptr<HairStyle> hs) { add_appearance(hs); _hair_style = hs; }
559
560 std::shared_ptr<BodyStyle> body_style() { return _body_style; }
561 void set_body_style(std::shared_ptr<BodyStyle> bs) { add_appearance(bs); _body_style = bs; }
562
563 std::shared_ptr<Zeny> zeny() { return _zeny; }
564 void set_zeny(std::shared_ptr<Zeny> z) {
565 if (_zeny != nullptr)
567 add_attribute(z);
568 _zeny = z;
569 }
570
571 std::shared_ptr<Honor> honor() { return _honor; }
572 void set_honor(std::shared_ptr<Honor> h) {
573 if (_honor != nullptr)
575 add_attribute(h);
576 _honor = h;
577 }
578
579 std::shared_ptr<Manner> manner() { return _manner; }
580 void set_manner(std::shared_ptr<Manner> m) {
581 if (_manner != nullptr)
583 add_attribute(m);
584 _manner = m;
585 }
586
587 std::shared_ptr<Virtue> virtue() { return _virtue; }
588 void set_virtue(std::shared_ptr<Virtue> v) {
589 if (_virtue != nullptr)
591 add_attribute(v);
592 _virtue = v;
593 }
594
598 std::shared_ptr<AttackDelay> attack_delay() { return _attack_delay; }
599 void set_attack_delay(std::shared_ptr<AttackDelay> a) {
600 if (_attack_delay != nullptr)
602 add_attribute(a);
603 _attack_delay = a;
604 }
605
606 std::shared_ptr<DamageWalkDelay> damage_walk_delay() { return _damage_walk_delay; }
607 void set_damage_walk_delay(std::shared_ptr<DamageWalkDelay> m) {
608 if (_damage_walk_delay != nullptr)
610 add_attribute(m);
612 }
613
614 std::shared_ptr<BaseAttack> base_attack() { return _base_attack; }
615 void set_base_attack(std::shared_ptr<BaseAttack> b) {
616 if (_base_attack != nullptr)
618 add_attribute(b);
619 _base_attack = b;
620 }
621
622 std::shared_ptr<WeaponAttackLeft> weapon_attack_left() { return _weapon_attack_left; }
623 void set_weapon_attack_left(std::shared_ptr<WeaponAttackLeft> w) {
624 if (_weapon_attack_left != nullptr)
626 add_attribute(w);
628 }
629
630 std::shared_ptr<WeaponAttackRight> weapon_attack_right() { return _weapon_attack_right; }
631 void set_weapon_attack_right(std::shared_ptr<WeaponAttackRight> w) {
632 if (_weapon_attack_right != nullptr)
634 add_attribute(w);
636 }
637
638 std::shared_ptr<WeaponAttackCombined> weapon_attack_combined() { return _weapon_attack_combined; }
639 void set_weapon_attack_combined(std::shared_ptr<WeaponAttackCombined> w) {
640 if (_weapon_attack_combined != nullptr)
642 add_attribute(w);
644 }
645
646 std::shared_ptr<UnitSize> size() { return _size; }
647 void set_size(std::shared_ptr<UnitSize> s) {
648 if (_size != nullptr)
650 add_attribute(s);
651 _size = s;
652 }
653
654 /* Mob Status */
655 std::shared_ptr<MobWeaponAttack> creature_weapon_attack() { return _creature_weapon_attack; }
656 void set_creature_weapon_attack(std::shared_ptr<MobWeaponAttack> m) {
657 if (_creature_weapon_attack != nullptr)
659 add_attribute(m);
661 }
662
663 std::shared_ptr<MobWeaponAttack> creature_weapon_attack_magic() { return _creature_weapon_attack_magic; }
664 void set_creature_weapon_attack_magic(std::shared_ptr<MobWeaponAttack> m) {
665 if (_creature_weapon_attack_magic != nullptr)
667 add_attribute(m);
669 }
670
671 std::shared_ptr<MobAttackDamage> creature_attack_damage() { return _creature_attack_damage; }
672 void set_creature_attack_damage(std::shared_ptr<MobAttackDamage> m) {
673 if (_creature_attack_damage != nullptr)
675 add_attribute(m);
677 }
678
679 std::shared_ptr<MobMagicAttackDamage> creature_magic_attack_damage() { return _creature_magic_attack_damage; }
680 void set_creature_magic_attack_damage(std::shared_ptr<MobMagicAttackDamage> m) {
681 if (_creature_magic_attack_damage != nullptr)
683 add_attribute(m);
685 }
686
687 std::shared_ptr<MobViewRange> creature_view_range() { return _creature_view_range; }
688 void set_creature_view_range(std::shared_ptr<MobViewRange> m) {
689 if (_creature_view_range != nullptr)
691 add_attribute(m);
693 }
694
695 std::shared_ptr<MobChaseRange> creature_chase_range() { return _creature_chase_range; }
696 void set_creature_chase_range(std::shared_ptr<MobChaseRange> m) {
697 if (_creature_chase_range != nullptr)
699 add_attribute(m);
701 }
702
703 std::shared_ptr<MobPrimaryRace> creature_primary_race() { return _creature_primary_race; }
704 void set_creature_primary_race(std::shared_ptr<MobPrimaryRace> m) {
705 if (_creature_primary_race != nullptr)
707 add_attribute(m);
709 }
710
711 std::shared_ptr<MobSecondaryRace> creature_secondary_race() { return _creature_secondary_race; }
712 void set_creature_secondary_race(std::shared_ptr<MobSecondaryRace> m) {
713 if (_creature_secondary_race != nullptr)
715 add_attribute(m);
717 }
718
719 std::shared_ptr<MobElement> creature_element() { return _creature_element; }
720 void set_creature_element(std::shared_ptr<MobElement> m) {
721 if (_creature_element != nullptr)
723 add_attribute(m);
725 }
726
727 std::shared_ptr<MobElementLevel> creature_element_level() { return _creature_element_level; }
728 void set_creature_element_level(std::shared_ptr<MobElementLevel> m) {
729 if (_creature_element_level != nullptr)
731 add_attribute(m);
733 }
734
735 std::shared_ptr<MobMode> creature_mode() { return _creature_mode; }
736 void set_creature_mode(std::shared_ptr<MobMode> m) {
737 if (_creature_mode != nullptr)
739 add_attribute(m);
740 _creature_mode = m;
741 }
742
743 std::shared_ptr<StatusRegistry> status_registry() { return _status_registry; }
744
746 void set_initialized(bool b) { _is_initialized = b; }
747
748 void add_attribute(std::shared_ptr<Attribute> attribute) { _attributes.push_back(attribute); }
749 void remove_attribute(std::shared_ptr<Attribute> attribute)
750 {
751 _attributes.erase(std::remove(_attributes.begin(), _attributes.end(), attribute), _attributes.end());
752 }
753 std::shared_ptr<Attribute> get_attribute(status_point_type type)
754 {
755 for (auto &attribute : _attributes)
756 {
757 if (attribute->get_type() == type)
758 return attribute;
759 }
760
761 return nullptr;
762 }
763
764 void add_appearance(std::shared_ptr<Appearance> appearance) { _appearances.push_back(appearance); }
765 void remove_appearance(std::shared_ptr<Appearance> appearance)
766 {
767 _appearances.erase(std::remove(_appearances.begin(), _appearances.end(), appearance), _appearances.end());
768 }
769 std::shared_ptr<Appearance> get_appearance(unit_appearance_type type)
770 {
771 for (auto &appearance : _appearances)
772 {
773 if (appearance->get_type() == type)
774 return appearance;
775 }
776
777 return nullptr;
778 }
779
780 void calculate(bool notify = true);
781 bool recalculate(bool notify = true);
782 bool update(uint64_t delta);
783
784 void add_bonus(std::shared_ptr<Bonuses::Bonus> bonus) { _bonuses.push_back(bonus); }
785 void remove_bonus(std::shared_ptr<Bonuses::Bonus> bonus)
786 {
787 _bonuses.erase(std::remove(_bonuses.begin(), _bonuses.end(), bonus), _bonuses.end());
788 }
789 std::shared_ptr<Bonuses::Bonus> get_bonus(status_point_type type)
790 {
791 for (auto &bonus : _bonuses)
792 {
793 if (bonus->get_type() == type)
794 return bonus;
795 }
796
797 return nullptr;
798 }
799
800 std::shared_ptr<Bonuses::BonusAllStatus> bonus_all_status() { return _bonus->_all_status; }
801 void set_bonus_all_status(std::shared_ptr<Bonuses::BonusAllStatus> b) {
802 if (_bonus->_all_status != nullptr)
803 remove_bonus(_bonus->_all_status);
804 add_bonus(b);
805 _bonus->_all_status = b;
806 }
807
808 std::shared_ptr<Bonuses::BonusAttackElement> bonus_attack_element() { return _bonus->_attack_element; }
809 void set_bonus_attack_element(std::shared_ptr<Bonuses::BonusAttackElement> b) {
810 if (_bonus->_attack_element != nullptr)
811 remove_bonus(_bonus->_attack_element);
812 add_bonus(b);
813 _bonus->_attack_element = b;
814 }
815
816 std::shared_ptr<Bonuses::BonusDefenseElement> bonus_defense_element() { return _bonus->_defense_element; }
817 void set_bonus_defense_element(std::shared_ptr<Bonuses::BonusDefenseElement> b) {
818 if (_bonus->_defense_element != nullptr)
819 remove_bonus(_bonus->_defense_element);
820 add_bonus(b);
821 _bonus->_defense_element = b;
822 }
823
824 std::shared_ptr<Bonuses::BonusCastPercent> bonus_cast_percent() { return _bonus->_cast_percent; }
825 void set_bonus_cast_percent(std::shared_ptr<Bonuses::BonusCastPercent> b) {
826 if (_bonus->_cast_percent != nullptr)
827 remove_bonus(_bonus->_cast_percent);
828 add_bonus(b);
829 _bonus->_cast_percent = b;
830 }
831
832 std::shared_ptr<Bonuses::BonusMaxHPPercent> bonus_max_hp_percent() { return _bonus->_max_hp_percent; }
833 void set_bonus_max_hp_percent(std::shared_ptr<Bonuses::BonusMaxHPPercent> b) {
834 if (_bonus->_max_hp_percent != nullptr)
835 remove_bonus(_bonus->_max_hp_percent);
836 add_bonus(b);
837 _bonus->_max_hp_percent = b;
838 }
839
840 std::shared_ptr<Bonuses::BonusMaxSPPercent> bonus_max_sp_percent() { return _bonus->_max_sp_percent; }
841 void set_bonus_max_sp_percent(std::shared_ptr<Bonuses::BonusMaxSPPercent> b) {
842 if (_bonus->_max_sp_percent != nullptr)
843 remove_bonus(_bonus->_max_sp_percent);
844 add_bonus(b);
845 _bonus->_max_sp_percent = b;
846 }
847
848 std::shared_ptr<Bonuses::BonusSPPercent> bonus_sp_percent() { return _bonus->_sp_percent; }
849 void set_bonus_sp_percent(std::shared_ptr<Bonuses::BonusSPPercent> b) {
850 if (_bonus->_sp_percent != nullptr)
851 remove_bonus(_bonus->_sp_percent);
852 add_bonus(b);
853 _bonus->_sp_percent = b;
854 }
855
856 std::shared_ptr<Bonuses::BonusAttackRange> bonus_attack_range() { return _bonus->_attack_range; }
857 void set_bonus_attack_range(std::shared_ptr<Bonuses::BonusAttackRange> b) {
858 if (_bonus->_attack_range != nullptr)
859 remove_bonus(_bonus->_attack_range);
860 add_bonus(b);
861 _bonus->_attack_range = b;
862 }
863
864 std::shared_ptr<Bonuses::BonusAttackRangePercent> bonus_attack_range_percent() { return _bonus->_attack_range_percent; }
865 void set_bonus_attack_range_percent(std::shared_ptr<Bonuses::BonusAttackRangePercent> b) {
866 if (_bonus->_attack_range_percent != nullptr)
867 remove_bonus(_bonus->_attack_range_percent);
868 add_bonus(b);
869 _bonus->_attack_range_percent = b;
870 }
871
872 std::shared_ptr<Bonuses::BonusAddMovementSpeedPercent> bonus_add_movement_speed_percent() { return _bonus->_bonus_add_movement_speed_percent; }
873 void set_bonus_add_movement_speed_percent(std::shared_ptr<Bonuses::BonusAddMovementSpeedPercent> b) {
874 if (_bonus->_bonus_add_movement_speed_percent != nullptr)
875 remove_bonus(_bonus->_bonus_add_movement_speed_percent);
876 add_bonus(b);
877 _bonus->_bonus_add_movement_speed_percent = b;
878 }
879
880 std::shared_ptr<Bonuses::BonusAttackSpeedPercent> bonus_attack_speed_percent() { return _bonus->_attack_speed_percent; }
881 void set_bonus_attack_speed_percent(std::shared_ptr<Bonuses::BonusAttackSpeedPercent> b) {
882 if (_bonus->_attack_speed_percent != nullptr)
883 remove_bonus(_bonus->_attack_speed_percent);
884 add_bonus(b);
885 _bonus->_attack_speed_percent = b;
886 }
887
888 std::shared_ptr<Bonuses::BonusHPRecoveryPercent> bonus_hp_recovery_percent() { return _bonus->_hp_recovery_percent; }
889 void set_bonus_hp_recovery_percent(std::shared_ptr<Bonuses::BonusHPRecoveryPercent> b) {
890 if (_bonus->_hp_recovery_percent != nullptr)
891 remove_bonus(_bonus->_hp_recovery_percent);
892 add_bonus(b);
893 _bonus->_hp_recovery_percent = b;
894 }
895
896 std::shared_ptr<Bonuses::BonusSPRecoveryPercent> bonus_sp_recovery_percent() { return _bonus->_sp_recovery_percent; }
897 void set_bonus_sp_recovery_percent(std::shared_ptr<Bonuses::BonusSPRecoveryPercent> b) {
898 if (_bonus->_sp_recovery_percent != nullptr)
899 remove_bonus(_bonus->_sp_recovery_percent);
900 add_bonus(b);
901 _bonus->_sp_recovery_percent = b;
902 }
903
904 std::shared_ptr<Bonuses::BonusCriticalDefense> bonus_critical_defense() { return _bonus->_critical_defense; }
905 void set_bonus_critical_defense(std::shared_ptr<Bonuses::BonusCriticalDefense> b) {
906 if (_bonus->_critical_defense != nullptr)
907 remove_bonus(_bonus->_critical_defense);
908 add_bonus(b);
909 _bonus->_critical_defense = b;
910 }
911
912 std::shared_ptr<Bonuses::BonusMeleeDefense> bonus_melee_defense() { return _bonus->_melee_defense; }
913 void set_bonus_melee_defense(std::shared_ptr<Bonuses::BonusMeleeDefense> b) {
914 if (_bonus->_melee_defense != nullptr)
915 remove_bonus(_bonus->_melee_defense);
916 add_bonus(b);
917 _bonus->_melee_defense = b;
918 }
919
920 std::shared_ptr<Bonuses::BonusRangedDefense> bonus_ranged_defense() { return _bonus->_ranged_defense; }
921 void set_bonus_ranged_defense(std::shared_ptr<Bonuses::BonusRangedDefense> b) {
922 if (_bonus->_ranged_defense != nullptr)
923 remove_bonus(_bonus->_ranged_defense);
924 add_bonus(b);
925 _bonus->_ranged_defense = b;
926 }
927
928 std::shared_ptr<Bonuses::BonusDoubleAttackPercent> bonus_double_attack_percent() { return _bonus->_double_attack_percent; }
929 void set_bonus_double_attack_percent(std::shared_ptr<Bonuses::BonusDoubleAttackPercent> b) {
930 if (_bonus->_double_attack_percent != nullptr)
931 remove_bonus(_bonus->_double_attack_percent);
932 add_bonus(b);
933 _bonus->_double_attack_percent = b;
934 }
935
936 std::shared_ptr<Bonuses::BonusMagicAttackPercent> bonus_magic_attack_percent() { return _bonus->_magic_attack_percent; }
937 void set_bonus_magic_attack_percent(std::shared_ptr<Bonuses::BonusMagicAttackPercent> b) {
938 if (_bonus->_magic_attack_percent != nullptr)
939 remove_bonus(_bonus->_magic_attack_percent);
940 add_bonus(b);
941 _bonus->_magic_attack_percent = b;
942 }
943
944 std::shared_ptr<Bonuses::BonusAttackPercent> bonus_attack_percent() { return _bonus->_attack_percent; }
945 void set_bonus_attack_percent(std::shared_ptr<Bonuses::BonusAttackPercent> b) {
946 if (_bonus->_attack_percent != nullptr)
947 remove_bonus(_bonus->_attack_percent);
948 add_bonus(b);
949 _bonus->_attack_percent = b;
950 }
951
952 std::shared_ptr<Bonuses::BonusMagicDefensePercent> bonus_magic_defense_percent() { return _bonus->_magic_defense_percent; }
953 void set_bonus_magic_defense_percent(std::shared_ptr<Bonuses::BonusMagicDefensePercent> b) {
954 if (_bonus->_magic_defense_percent != nullptr)
955 remove_bonus(_bonus->_magic_defense_percent);
956 add_bonus(b);
957 _bonus->_magic_defense_percent = b;
958 }
959
960 std::shared_ptr<Bonuses::BonusMiscDefensePercent> bonus_misc_defense_percent() { return _bonus->_misc_defense_percent; }
961 void set_bonus_misc_defense_percent(std::shared_ptr<Bonuses::BonusMiscDefensePercent> b) {
962 if (_bonus->_misc_defense_percent != nullptr)
963 remove_bonus(_bonus->_misc_defense_percent);
964 add_bonus(b);
965 _bonus->_misc_defense_percent = b;
966 }
967
968 std::shared_ptr<Bonuses::BonusPerfectHitPercent> bonus_perfect_hit_percent() { return _bonus->_perfect_hit_percent; }
969 void set_bonus_perfect_hit_percent(std::shared_ptr<Bonuses::BonusPerfectHitPercent> b) {
970 if (_bonus->_perfect_hit_percent != nullptr)
971 remove_bonus(_bonus->_perfect_hit_percent);
972 add_bonus(b);
973 _bonus->_perfect_hit_percent = b;
974 }
975
976 std::shared_ptr<Bonuses::BonusCriticalPercent> bonus_critical_percent() { return _bonus->_critical_percent; }
977 void set_bonus_critical_percent(std::shared_ptr<Bonuses::BonusCriticalPercent> b) {
978 if (_bonus->_critical_percent != nullptr)
979 remove_bonus(_bonus->_critical_percent);
980 add_bonus(b);
981 _bonus->_critical_percent = b;
982 }
983
984 std::shared_ptr<Bonuses::BonusGetZenyNum> bonus_get_zeny_num() { return _bonus->_get_zeny_num; }
985 void set_bonus_get_zeny_num(std::shared_ptr<Bonuses::BonusGetZenyNum> b) {
986 if (_bonus->_get_zeny_num != nullptr)
987 remove_bonus(_bonus->_get_zeny_num);
988 add_bonus(b);
989 _bonus->_get_zeny_num = b;
990 }
991
992 std::shared_ptr<Bonuses::BonusAttackOnDefenseRatioForElement> bonus_attack_on_defense_ratio_for_element() { return _bonus->_attack_on_defense_ratio_for_element; }
993 void set_bonus_attack_on_defense_ratio_for_element(std::shared_ptr<Bonuses::BonusAttackOnDefenseRatioForElement> b) {
994 if (_bonus->_attack_on_defense_ratio_for_element != nullptr)
995 remove_bonus(_bonus->_attack_on_defense_ratio_for_element);
996 add_bonus(b);
997 _bonus->_attack_on_defense_ratio_for_element = b;
998 }
999
1000 std::shared_ptr<Bonuses::BonusAttackOnDefenseRatioForRace> bonus_attack_on_defense_ratio_for_race() { return _bonus->_attack_on_defense_ratio_for_race; }
1001 void set_bonus_attack_on_defense_ratio_for_race(std::shared_ptr<Bonuses::BonusAttackOnDefenseRatioForRace> b) {
1002 if (_bonus->_attack_on_defense_ratio_for_race != nullptr)
1003 remove_bonus(_bonus->_attack_on_defense_ratio_for_race);
1004 add_bonus(b);
1005 _bonus->_attack_on_defense_ratio_for_race = b;
1006 };
1007
1008 std::shared_ptr<Bonuses::BonusHitPercent> bonus_hit_percent() { return _bonus->_hit_percent; }
1009 void set_bonus_hit_percent(std::shared_ptr<Bonuses::BonusHitPercent> b) {
1010 if (_bonus->_hit_percent != nullptr)
1011 remove_bonus(_bonus->_hit_percent);
1012 add_bonus(b);
1013 _bonus->_hit_percent = b;
1014 }
1015
1016 std::shared_ptr<Bonuses::BonusFleePercent> bonus_flee_percent() { return _bonus->_flee_percent; }
1017 void set_bonus_flee_percent(std::shared_ptr<Bonuses::BonusFleePercent> b) {
1018 if (_bonus->_flee_percent != nullptr)
1019 remove_bonus(_bonus->_flee_percent);
1020 add_bonus(b);
1021 _bonus->_flee_percent = b;
1022 }
1023
1024 std::shared_ptr<Bonuses::BonusPerfectDodgePercent> bonus_perfect_dodge_percent() { return _bonus->_perfect_dodge_percent; }
1025 void set_bonus_perfect_dodge_percent(std::shared_ptr<Bonuses::BonusPerfectDodgePercent> b) {
1026 if (_bonus->_perfect_dodge_percent != nullptr)
1027 remove_bonus(_bonus->_perfect_dodge_percent);
1028 add_bonus(b);
1029 _bonus->_perfect_dodge_percent = b;
1030 }
1031
1032 std::shared_ptr<Bonuses::BonusSoftDefensePercent> bonus_soft_defense_percent() { return _bonus->_soft_defense_percent; }
1033 void set_bonus_soft_defense_percent(std::shared_ptr<Bonuses::BonusSoftDefensePercent> b) {
1034 if (_bonus->_soft_defense_percent != nullptr)
1035 remove_bonus(_bonus->_soft_defense_percent);
1036 add_bonus(b);
1037 _bonus->_soft_defense_percent = b;
1038 }
1039
1040 std::shared_ptr<Bonuses::BonusHardDefensePercent> bonus_hard_defense_percent() { return _bonus->_hard_defense_percent; }
1041 void set_bonus_hard_defense_percent(std::shared_ptr<Bonuses::BonusHardDefensePercent> b) {
1042 if (_bonus->_hard_defense_percent != nullptr)
1043 remove_bonus(_bonus->_hard_defense_percent);
1044 add_bonus(b);
1045 _bonus->_hard_defense_percent = b;
1046 }
1047
1048 std::shared_ptr<Bonuses::BonusSoftMagicalDefensePercent> bonus_soft_magical_defense_percent() { return _bonus->_soft_magical_defense_percent; }
1049 void set_bonus_soft_magical_defense_percent(std::shared_ptr<Bonuses::BonusSoftMagicalDefensePercent> b) {
1050 if (_bonus->_soft_magical_defense_percent != nullptr)
1051 remove_bonus(_bonus->_soft_magical_defense_percent);
1052 add_bonus(b);
1053 _bonus->_soft_magical_defense_percent = b;
1054 }
1055
1056 std::shared_ptr<Bonuses::BonusHardMagicalDefensePercent> bonus_hard_magical_defense_percent() { return _bonus->_hard_magical_defense_percent; }
1057 void set_bonus_hard_magical_defense_percent(std::shared_ptr<Bonuses::BonusHardMagicalDefensePercent> b) {
1058 if (_bonus->_hard_magical_defense_percent != nullptr)
1059 remove_bonus(_bonus->_hard_magical_defense_percent);
1060 add_bonus(b);
1061 _bonus->_hard_magical_defense_percent = b;
1062 }
1063
1064 std::shared_ptr<Bonuses::BonusRestartWithFullRecovery> bonus_restart_with_full_recovery() { return _bonus->_restart_with_full_recovery; }
1065 void set_bonus_restart_with_full_recovery(std::shared_ptr<Bonuses::BonusRestartWithFullRecovery> b) {
1066 if (_bonus->_restart_with_full_recovery != nullptr)
1067 remove_bonus(_bonus->_restart_with_full_recovery);
1068 add_bonus(b);
1069 _bonus->_restart_with_full_recovery = b;
1070 }
1071
1072 std::shared_ptr<Bonuses::BonusCastCancelImmunity> bonus_cast_cancel_immunity() { return _bonus->_cast_cancel_immunity; }
1073 void set_bonus_cast_cancel_immunity(std::shared_ptr<Bonuses::BonusCastCancelImmunity> b) {
1074 if (_bonus->_cast_cancel_immunity != nullptr)
1075 remove_bonus(_bonus->_cast_cancel_immunity);
1076 add_bonus(b);
1077 _bonus->_cast_cancel_immunity = b;
1078 }
1079
1080 std::shared_ptr<Bonuses::BonusSizeModifierImmunity> bonus_size_modifier_immunity() { return _bonus->_size_modifier_immunity; }
1081 void set_bonus_size_modifier_immunity(std::shared_ptr<Bonuses::BonusSizeModifierImmunity> b) {
1082 if (_bonus->_size_modifier_immunity != nullptr)
1083 remove_bonus(_bonus->_size_modifier_immunity);
1084 add_bonus(b);
1085 _bonus->_size_modifier_immunity = b;
1086 }
1087
1088 std::shared_ptr<Bonuses::BonusMagicDamageImmunity> bonus_magic_damage_immunity() { return _bonus->_magic_damage_immunity; }
1089 void set_bonus_magic_damage_immunity(std::shared_ptr<Bonuses::BonusMagicDamageImmunity> b) {
1090 if (_bonus->_magic_damage_immunity != nullptr)
1091 remove_bonus(_bonus->_magic_damage_immunity);
1092 add_bonus(b);
1093 _bonus->_magic_damage_immunity = b;
1094 }
1095
1096 std::shared_ptr<Bonuses::BonusWeaponDamageImmunity> bonus_weapon_damage_immunity() { return _bonus->_weapon_damage_immunity; }
1097 void set_bonus_weapon_damage_immunity(std::shared_ptr<Bonuses::BonusWeaponDamageImmunity> b) {
1098 if (_bonus->_weapon_damage_immunity != nullptr)
1099 remove_bonus(_bonus->_weapon_damage_immunity);
1100 add_bonus(b);
1101 _bonus->_weapon_damage_immunity = b;
1102 }
1103
1104 std::shared_ptr<Bonuses::BonusGemstoneImmunity> bonus_gemstone_immunity() { return _bonus->_gemstone_immunity; }
1105 void set_bonus_gemstone_immunity(std::shared_ptr<Bonuses::BonusGemstoneImmunity> b) {
1106 if (_bonus->_gemstone_immunity != nullptr)
1107 remove_bonus(_bonus->_gemstone_immunity);
1108 add_bonus(b);
1109 _bonus->_gemstone_immunity = b;
1110 }
1111
1112 std::shared_ptr<Bonuses::BonusGearFuelImmunity> bonus_gear_fuel_immunity() { return _bonus->_gear_fuel_immunity; }
1113 void set_bonus_gear_fuel_immunity(std::shared_ptr<Bonuses::BonusGearFuelImmunity> b) {
1114 if (_bonus->_gear_fuel_immunity != nullptr)
1115 remove_bonus(_bonus->_gear_fuel_immunity);
1116 add_bonus(b);
1117 _bonus->_gear_fuel_immunity = b;
1118 }
1119
1120 std::shared_ptr<Bonuses::BonusInfiniteEndure> bonus_infinite_endure() { return _bonus->_infinite_endure; }
1121 void set_bonus_infinite_endure(std::shared_ptr<Bonuses::BonusInfiniteEndure> b) {
1122 if (_bonus->_infinite_endure != nullptr)
1123 remove_bonus(_bonus->_infinite_endure);
1124 add_bonus(b);
1125 _bonus->_infinite_endure = b;
1126 }
1127
1128 std::shared_ptr<Bonuses::BonusUnbreakableWeapon> bonus_unbreakable_weapon() { return _bonus->_unbreakable_weapon; }
1129 void set_bonus_unbreakable_weapon(std::shared_ptr<Bonuses::BonusUnbreakableWeapon> b) {
1130 if (_bonus->_unbreakable_weapon != nullptr)
1131 remove_bonus(_bonus->_unbreakable_weapon);
1132 add_bonus(b);
1133 _bonus->_unbreakable_weapon = b;
1134 }
1135
1136 std::shared_ptr<Bonuses::BonusUnbreakableArmor> bonus_unbreakable_armor() { return _bonus->_unbreakable_armor; }
1137 void set_bonus_unbreakable_armor(std::shared_ptr<Bonuses::BonusUnbreakableArmor> b) {
1138 if (_bonus->_unbreakable_armor != nullptr)
1139 remove_bonus(_bonus->_unbreakable_armor);
1140 add_bonus(b);
1141 _bonus->_unbreakable_armor = b;
1142 }
1143
1144 std::shared_ptr<Bonuses::BonusUnbreakableHelm> bonus_unbreakable_helm() { return _bonus->_unbreakable_helm; }
1145 void set_bonus_unbreakable_helm(std::shared_ptr<Bonuses::BonusUnbreakableHelm> b) {
1146 if (_bonus->_unbreakable_helm != nullptr)
1147 remove_bonus(_bonus->_unbreakable_helm);
1148 add_bonus(b);
1149 _bonus->_unbreakable_helm = b;
1150 }
1151
1152 std::shared_ptr<Bonuses::BonusUnbreakableShield> bonus_unbreakable_shield() { return _bonus->_unbreakable_shield; }
1153 void set_bonus_unbreakable_shield(std::shared_ptr<Bonuses::BonusUnbreakableShield> b) {
1154 if (_bonus->_unbreakable_shield != nullptr)
1155 remove_bonus(_bonus->_unbreakable_shield);
1156 add_bonus(b);
1157 _bonus->_unbreakable_shield = b;
1158 }
1159
1160 std::shared_ptr<Bonuses::BonusSPGainOnMobKill> bonus_sp_gain_on_mob_kill() { return _bonus->_sp_gain_on_mob_kill; }
1161 void set_bonus_sp_gain_on_mob_kill(std::shared_ptr<Bonuses::BonusSPGainOnMobKill> b) {
1162 if (_bonus->_sp_gain_on_mob_kill != nullptr)
1163 remove_bonus(_bonus->_sp_gain_on_mob_kill);
1164 add_bonus(b);
1165 _bonus->_sp_gain_on_mob_kill = b;
1166 }
1167
1168 std::shared_ptr<Bonuses::BonusHPGainOnMobKill> bonus_hp_gain_on_mob_kill() { return _bonus->_hp_gain_on_mob_kill; }
1169 void set_bonus_hp_gain_on_mob_kill(std::shared_ptr<Bonuses::BonusHPGainOnMobKill> b) {
1170 if (_bonus->_hp_gain_on_mob_kill != nullptr)
1171 remove_bonus(_bonus->_hp_gain_on_mob_kill);
1172 add_bonus(b);
1173 _bonus->_hp_gain_on_mob_kill = b;
1174 }
1175
1176 std::shared_ptr<Bonuses::BonusDamageSplashRange> bonus_damage_splash_range() { return _bonus->_damage_splash_range; }
1177 void set_bonus_damage_splash_range(std::shared_ptr<Bonuses::BonusDamageSplashRange> b) {
1178 if (_bonus->_damage_splash_range != nullptr)
1179 remove_bonus(_bonus->_damage_splash_range);
1180 add_bonus(b);
1181 _bonus->_damage_splash_range = b;
1182 }
1183
1184 std::shared_ptr<Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf> bonus_melee_weapon_damage_reflect_percent_on_self() { return _bonus->_melee_weapon_damage_reflect_percent_on_self; }
1185 void set_bonus_melee_weapon_damage_reflect_percent_on_self(std::shared_ptr<Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf> b) {
1186 if (_bonus->_melee_weapon_damage_reflect_percent_on_self != nullptr)
1187 remove_bonus(_bonus->_melee_weapon_damage_reflect_percent_on_self);
1188 add_bonus(b);
1189 _bonus->_melee_weapon_damage_reflect_percent_on_self = b;
1190 }
1191
1192 std::shared_ptr<Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf> bonus_ranged_weapon_damage_reflect_percent_on_self() { return _bonus->_ranged_weapon_damage_reflect_percent_on_self; }
1193 void set_bonus_ranged_weapon_damage_reflect_percent_on_self(std::shared_ptr<Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf> b) {
1194 if (_bonus->_ranged_weapon_damage_reflect_percent_on_self != nullptr)
1195 remove_bonus(_bonus->_ranged_weapon_damage_reflect_percent_on_self);
1196 add_bonus(b);
1197 _bonus->_ranged_weapon_damage_reflect_percent_on_self = b;
1198 }
1199
1200 std::shared_ptr<Bonuses::BonusWeaponBreakPercent> bonus_weapon_break_percent() { return _bonus->_weapon_break_percent; }
1201 void set_bonus_weapon_break_percent(std::shared_ptr<Bonuses::BonusWeaponBreakPercent> b) {
1202 if (_bonus->_weapon_break_percent != nullptr)
1203 remove_bonus(_bonus->_weapon_break_percent);
1204 add_bonus(b);
1205 _bonus->_weapon_break_percent = b;
1206 }
1207
1208 std::shared_ptr<Bonuses::BonusArmorBreakPercent> bonus_armor_break_percent() { return _bonus->_armor_break_percent; }
1209 void set_bonus_armor_break_percent(std::shared_ptr<Bonuses::BonusArmorBreakPercent> b) {
1210 if (_bonus->_armor_break_percent != nullptr)
1211 remove_bonus(_bonus->_armor_break_percent);
1212 add_bonus(b);
1213 _bonus->_armor_break_percent = b;
1214 }
1215
1216 std::shared_ptr<Bonuses::BonusAddStealPercent> bonus_add_steal_percent() { return _bonus->_add_steal_percent; }
1217 void set_bonus_add_steal_percent(std::shared_ptr<Bonuses::BonusAddStealPercent> b) {
1218 if (_bonus->_add_steal_percent != nullptr)
1219 remove_bonus(_bonus->_add_steal_percent);
1220 add_bonus(b);
1221 _bonus->_add_steal_percent = b;
1222 }
1223
1224 std::shared_ptr<Bonuses::BonusCriticalDamagePercent> bonus_critical_damage_percent() { return _bonus->_critical_damage_percent; }
1225 void set_bonus_critical_damage_percent(std::shared_ptr<Bonuses::BonusCriticalDamagePercent> b) {
1226 if (_bonus->_critical_damage_percent != nullptr)
1227 remove_bonus(_bonus->_critical_damage_percent);
1228 add_bonus(b);
1229 _bonus->_critical_damage_percent = b;
1230 }
1231
1232 std::shared_ptr<Bonuses::BonusDisableHPRecovery> bonus_disable_hp_recovery() { return _bonus->_disable_hp_recovery; }
1233 void set_bonus_disable_hp_recovery(std::shared_ptr<Bonuses::BonusDisableHPRecovery> b) {
1234 if (_bonus->_disable_hp_recovery != nullptr)
1235 remove_bonus(_bonus->_disable_hp_recovery);
1236 add_bonus(b);
1237 _bonus->_disable_hp_recovery = b;
1238 }
1239
1240 std::shared_ptr<Bonuses::BonusDisableSPRecovery> bonus_disable_sp_recovery() { return _bonus->_disable_sp_recovery; }
1241 void set_bonus_disable_sp_recovery(std::shared_ptr<Bonuses::BonusDisableSPRecovery> b) {
1242 if (_bonus->_disable_sp_recovery != nullptr)
1243 remove_bonus(_bonus->_disable_sp_recovery);
1244 add_bonus(b);
1245 _bonus->_disable_sp_recovery = b;
1246 }
1247
1248 std::shared_ptr<Bonuses::BonusMagicDamageReflectPercentOnSelf> bonus_magic_damage_reflect_percent_on_self() { return _bonus->_magic_damage_reflect_percent_on_self; }
1249 void set_bonus_magic_damage_reflect_percent_on_self(std::shared_ptr<Bonuses::BonusMagicDamageReflectPercentOnSelf> b) {
1250 if (_bonus->_magic_damage_reflect_percent_on_self != nullptr)
1251 remove_bonus(_bonus->_magic_damage_reflect_percent_on_self);
1252 add_bonus(b);
1253 _bonus->_magic_damage_reflect_percent_on_self = b;
1254 }
1255
1256 std::shared_ptr<Bonuses::BonusShortWeaponDamagePercent> bonus_short_weapon_damage_percent() { return _bonus->_short_weapon_damage_percent; }
1257 void set_bonus_short_weapon_damage_percent(std::shared_ptr<Bonuses::BonusShortWeaponDamagePercent> b) {
1258 if (_bonus->_short_weapon_damage_percent != nullptr)
1259 remove_bonus(_bonus->_short_weapon_damage_percent);
1260 add_bonus(b);
1261 _bonus->_short_weapon_damage_percent = b;
1262 }
1263
1264 std::shared_ptr<Bonuses::BonusLongWeaponDamagePercent> bonus_long_weapon_damage_percent() { return _bonus->_long_weapon_damage_percent; }
1265 void set_bonus_long_weapon_damage_percent(std::shared_ptr<Bonuses::BonusLongWeaponDamagePercent> b) {
1266 if (_bonus->_long_weapon_damage_percent != nullptr)
1267 remove_bonus(_bonus->_long_weapon_damage_percent);
1268 add_bonus(b);
1269 _bonus->_long_weapon_damage_percent = b;
1270 }
1271
1272 std::shared_ptr<Bonuses::BonusItemUsageImmunity> bonus_item_usage_immunity() { return _bonus->_item_usage_immunity; }
1273 void set_bonus_item_usage_immunity(std::shared_ptr<Bonuses::BonusItemUsageImmunity> b) {
1274 if (_bonus->_item_usage_immunity != nullptr)
1275 remove_bonus(_bonus->_item_usage_immunity);
1276 add_bonus(b);
1277 _bonus->_item_usage_immunity = b;
1278 }
1279
1280 std::shared_ptr<Bonuses::BonusKnockBackImmunity> bonus_knock_back_immunity() { return _bonus->_knockback_immunity; }
1281 void set_bonus_knock_back_immunity(std::shared_ptr<Bonuses::BonusKnockBackImmunity> b) {
1282 if (_bonus->_knockback_immunity != nullptr)
1283 remove_bonus(_bonus->_knockback_immunity);
1284 add_bonus(b);
1285 _bonus->_knockback_immunity = b;
1286 }
1287
1288 std::shared_ptr<Bonuses::BonusHPVanishPercent> bonus_hp_vanish_percent() { return _bonus->_hp_vanish_percent; }
1289 void set_bonus_hp_vanish_percent(std::shared_ptr<Bonuses::BonusHPVanishPercent> b) {
1290 if (_bonus->_hp_vanish_percent != nullptr)
1291 remove_bonus(_bonus->_hp_vanish_percent);
1292 add_bonus(b);
1293 _bonus->_hp_vanish_percent = b;
1294 }
1295
1296 std::shared_ptr<Bonuses::BonusSPVanishPercent> bonus_sp_vanish_percent() { return _bonus->_sp_vanish_percent; }
1297 void set_bonus_sp_vanish_percent(std::shared_ptr<Bonuses::BonusSPVanishPercent> b) {
1298 if (_bonus->_sp_vanish_percent != nullptr)
1299 remove_bonus(_bonus->_sp_vanish_percent);
1300 add_bonus(b);
1301 _bonus->_sp_vanish_percent = b;
1302 }
1303
1304 std::shared_ptr<Bonuses::BonusRaise> bonus_raise() { return _bonus->_raise; }
1305 void set_bonus_raise(std::shared_ptr<Bonuses::BonusRaise> b) {
1306 if (_bonus->_raise != nullptr)
1307 remove_bonus(_bonus->_raise);
1308 add_bonus(b);
1309 _bonus->_raise = b;
1310 }
1311
1312 std::shared_ptr<Bonuses::BonusAddItemDropOnMonsterKill> bonus_add_item_drop_on_monster_kill() { return _bonus->_add_item_drop_on_monster_kill; }
1313 void set_bonus_add_item_drop_on_monster_kill(std::shared_ptr<Bonuses::BonusAddItemDropOnMonsterKill> b) {
1314 if (_bonus->_add_item_drop_on_monster_kill != nullptr)
1315 remove_bonus(_bonus->_add_item_drop_on_monster_kill);
1316 add_bonus(b);
1317 _bonus->_add_item_drop_on_monster_kill = b;
1318 }
1319
1320 std::shared_ptr<Bonuses::BonusHPDrainOnMonsterKill> bonus_hp_drain_on_monster_kill() { return _bonus->_hp_drain_on_monster_kill; }
1321 void set_bonus_hp_drain_on_monster_kill(std::shared_ptr<Bonuses::BonusHPDrainOnMonsterKill> b) {
1322 if (_bonus->_hp_drain_on_monster_kill != nullptr)
1323 remove_bonus(_bonus->_hp_drain_on_monster_kill);
1324 add_bonus(b);
1325 _bonus->_hp_drain_on_monster_kill = b;
1326 }
1327
1328 std::shared_ptr<Bonuses::BonusSPDrainOnMonsterKill> bonus_sp_drain_on_monster_kill() { return _bonus->_sp_drain_on_monster_kill; }
1329 void set_bonus_sp_drain_on_monster_kill(std::shared_ptr<Bonuses::BonusSPDrainOnMonsterKill> b) {
1330 if (_bonus->_sp_drain_on_monster_kill != nullptr)
1331 remove_bonus(_bonus->_sp_drain_on_monster_kill);
1332 add_bonus(b);
1333 _bonus->_sp_drain_on_monster_kill = b;
1334 }
1335
1336 void add_bonus(std::shared_ptr<Bonuses::IBonusArray> ba) { _bonus_arrays.push_back(ba); }
1337 void remove_bonus(std::shared_ptr<Bonuses::IBonusArray> ba)
1338 {
1339 _bonus_arrays.erase(std::remove(_bonus_arrays.begin(), _bonus_arrays.end(), ba), _bonus_arrays.end());
1340 }
1341 std::shared_ptr<Bonuses::IBonusArray> get_bonus_array(status_point_type type)
1342 {
1343 for (auto &ba : _bonus_arrays)
1344 {
1345 if (ba->get_type() == type)
1346 return ba;
1347 }
1348
1349 return nullptr;
1350 }
1351
1352 std::shared_ptr<Bonuses::BonusAddAttackPercentageToElement> bonus_add_attack_percentage_to_element() { return _bonus->_add_attack_percentage_to_element; }
1353 void set_bonus_add_attack_percentage_to_element(std::shared_ptr<Bonuses::BonusAddAttackPercentageToElement> b) {
1354 if (_bonus->_add_attack_percentage_to_element != nullptr)
1355 remove_bonus(_bonus->_add_attack_percentage_to_element);
1356 add_bonus(b);
1357 _bonus->_add_attack_percentage_to_element = b;
1358 }
1359
1360 std::shared_ptr<Bonuses::BonusAddAttackPercentageToRace> bonus_add_attack_percentage_to_race() { return _bonus->_add_attack_percentage_to_race; }
1361 void set_bonus_add_attack_percentage_to_race(std::shared_ptr<Bonuses::BonusAddAttackPercentageToRace> b) {
1362 if (_bonus->_add_attack_percentage_to_race != nullptr)
1363 remove_bonus(_bonus->_add_attack_percentage_to_race);
1364 add_bonus(b);
1365 _bonus->_add_attack_percentage_to_race = b;
1366 }
1367
1368 std::shared_ptr<Bonuses::BonusAddAttackPercentageToSize> bonus_add_attack_percentage_to_size() { return _bonus->_add_attack_percentage_to_size; }
1369 void set_bonus_add_attack_percentage_to_size(std::shared_ptr<Bonuses::BonusAddAttackPercentageToSize> b) {
1370 if (_bonus->_add_attack_percentage_to_size != nullptr)
1371 remove_bonus(_bonus->_add_attack_percentage_to_size);
1372 add_bonus(b);
1373 _bonus->_add_attack_percentage_to_size = b;
1374 }
1375
1376 std::shared_ptr<Bonuses::BonusSubAttackPercentageFromElement> bonus_sub_attack_percentage_from_element() { return _bonus->_sub_attack_percentage_from_element; }
1377 void set_bonus_sub_attack_percentage_from_element(std::shared_ptr<Bonuses::BonusSubAttackPercentageFromElement> b) {
1378 if (_bonus->_sub_attack_percentage_from_element != nullptr)
1379 remove_bonus(_bonus->_sub_attack_percentage_from_element);
1380 add_bonus(b);
1381 _bonus->_sub_attack_percentage_from_element = b;
1382 }
1383
1384 std::shared_ptr<Bonuses::BonusSubAttackPercentageFromRace> bonus_sub_attack_percentage_from_race() { return _bonus->_sub_attack_percentage_from_race; }
1385 void set_bonus_sub_attack_percentage_from_race(std::shared_ptr<Bonuses::BonusSubAttackPercentageFromRace> b) {
1386 if (_bonus->_sub_attack_percentage_from_race != nullptr)
1387 remove_bonus(_bonus->_sub_attack_percentage_from_race);
1388 add_bonus(b);
1389 _bonus->_sub_attack_percentage_from_race = b;
1390 }
1391
1392 std::shared_ptr<Bonuses::BonusAddEffectOnDamage> bonus_add_effect_on_damage() { return _bonus->_add_effect_on_damage; }
1393 void set_bonus_add_effect_on_damage(std::shared_ptr<Bonuses::BonusAddEffectOnDamage> b) {
1394 if (_bonus->_add_effect_on_damage != nullptr)
1395 remove_bonus(_bonus->_add_effect_on_damage);
1396 add_bonus(b);
1397 _bonus->_add_effect_on_damage = b;
1398 }
1399
1400 std::shared_ptr<Bonuses::BonusAddEffectWhenDamaged> bonus_add_effect_when_damaged() { return _bonus->_add_effect_when_damaged; }
1401 void set_bonus_add_effect_when_damaged(std::shared_ptr<Bonuses::BonusAddEffectWhenDamaged> b) {
1402 if (_bonus->_add_effect_when_damaged != nullptr)
1403 remove_bonus(_bonus->_add_effect_when_damaged);
1404 add_bonus(b);
1405 _bonus->_add_effect_when_damaged = b;
1406 }
1407
1408 std::shared_ptr<Bonuses::BonusRessistEffect> bonus_ressist_effect() { return _bonus->_ressist_effect; }
1409 void set_bonus_ressist_effect(std::shared_ptr<Bonuses::BonusRessistEffect> b) {
1410 if (_bonus->_ressist_effect != nullptr)
1411 remove_bonus(_bonus->_ressist_effect);
1412 add_bonus(b);
1413 _bonus->_ressist_effect = b;
1414 }
1415
1416 std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToElement> bonus_add_magic_attack_percentage_to_element() { return _bonus->_add_magic_attack_percentage_to_element; }
1417 void set_bonus_add_magic_attack_percentage_to_element(std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToElement> b) {
1418 if (_bonus->_add_magic_attack_percentage_to_element != nullptr)
1419 remove_bonus(_bonus->_add_magic_attack_percentage_to_element);
1420 add_bonus(b);
1421 _bonus->_add_magic_attack_percentage_to_element = b;
1422 }
1423
1424 std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToRace> bonus_add_magic_attack_to_Race() { return _bonus->_add_magic_attack_percentage_to_race; }
1425 void set_bonus_add_magic_attack_percentage_to_race(std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToRace> b) {
1426 if (_bonus->_add_magic_attack_percentage_to_race != nullptr)
1427 remove_bonus(_bonus->_add_magic_attack_percentage_to_race);
1428 add_bonus(b);
1429 _bonus->_add_magic_attack_percentage_to_race = b;
1430 }
1431
1432 std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToSize> bonus_add_magic_attack_percentage_to_size() { return _bonus->_add_magic_attack_percentage_to_size; }
1433 void set_bonus_add_magic_attack_percentage_to_size(std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToSize> b) {
1434 if (_bonus->_add_magic_attack_percentage_to_size != nullptr)
1435 remove_bonus(_bonus->_add_magic_attack_percentage_to_size);
1436 add_bonus(b);
1437 _bonus->_add_magic_attack_percentage_to_size = b;
1438 }
1439
1440 std::shared_ptr<Bonuses::BonusAddEffectOnMagicAttack> bonus_add_effect_on_magic_attack() { return _bonus->_add_effect_on_magic_attack; }
1441 void set_bonus_add_effect_on_magic_attack(std::shared_ptr<Bonuses::BonusAddEffectOnMagicAttack> b) {
1442 if (_bonus->_add_effect_on_magic_attack != nullptr)
1443 remove_bonus(_bonus->_add_effect_on_magic_attack);
1444 add_bonus(b);
1445 _bonus->_add_effect_on_magic_attack = b;
1446 }
1447
1448 std::shared_ptr<Bonuses::BonusResistMagicAttackFromRace> bonus_resist_magic_attack_from_race() { return _bonus->_resist_magic_attack_from_race; }
1449 void set_bonus_resist_magic_attack_from_race(std::shared_ptr<Bonuses::BonusResistMagicAttackFromRace> b) {
1450 if (_bonus->_resist_magic_attack_from_race != nullptr)
1451 remove_bonus(_bonus->_resist_magic_attack_from_race);
1452 add_bonus(b);
1453 _bonus->_resist_magic_attack_from_race = b;
1454 }
1455
1456 std::shared_ptr<Bonuses::BonusAddDamageToClass> bonus_add_damage_to_class() { return _bonus->_add_damage_to_class; }
1457 void set_bonus_add_damage_to_class(std::shared_ptr<Bonuses::BonusAddDamageToClass> b) {
1458 if (_bonus->_add_damage_to_class != nullptr)
1459 remove_bonus(_bonus->_add_damage_to_class);
1460 add_bonus(b);
1461 _bonus->_add_damage_to_class = b;
1462 }
1463
1464 std::shared_ptr<Bonuses::BonusAddMagicDamageToClass> bonus_add_magic_damage_to_class() { return _bonus->_add_magic_damage_to_class; }
1465 void set_bonus_add_magic_damage_to_class(std::shared_ptr<Bonuses::BonusAddMagicDamageToClass> b) {
1466 if (_bonus->_add_magic_damage_to_class != nullptr)
1467 remove_bonus(_bonus->_add_magic_damage_to_class);
1468 add_bonus(b);
1469 _bonus->_add_magic_damage_to_class = b;
1470 }
1471
1472 std::shared_ptr<Bonuses::BonusAddDefenseToClass> bonus_add_defense_to_class() { return _bonus->_add_defense_to_class; }
1473 void set_bonus_add_defense_to_class(std::shared_ptr<Bonuses::BonusAddDefenseToClass> b) {
1474 if (_bonus->_add_defense_to_class != nullptr)
1475 remove_bonus(_bonus->_add_defense_to_class);
1476 add_bonus(b);
1477 _bonus->_add_defense_to_class = b;
1478 }
1479
1480 std::shared_ptr<Bonuses::BonusAddMagicalDefenseToClass> bonus_add_magical_defense_to_class() { return _bonus->_add_magical_defense_to_class; }
1481 void set_bonus_add_magical_defense_to_class(std::shared_ptr<Bonuses::BonusAddMagicalDefenseToClass> b) {
1482 if (_bonus->_add_magical_defense_to_class != nullptr)
1483 remove_bonus(_bonus->_add_magical_defense_to_class);
1484 add_bonus(b);
1485 _bonus->_add_magical_defense_to_class = b;
1486 }
1487
1488 std::shared_ptr<Bonuses::BonusHPDrainPercent> bonus_hp_drain_percent() { return _bonus->_hp_drain_percent; }
1489 void set_bonus_hp_drain_percent(std::shared_ptr<Bonuses::BonusHPDrainPercent> b) {
1490 if (_bonus->_hp_drain_percent != nullptr)
1491 remove_bonus(_bonus->_hp_drain_percent);
1492 add_bonus(b);
1493 _bonus->_hp_drain_percent = b;
1494 }
1495
1496 std::shared_ptr<Bonuses::BonusHPDrainValue> bonus_hp_drain_value() { return _bonus->_hp_drain_value; }
1497 void set_bonus_hp_drain_value(std::shared_ptr<Bonuses::BonusHPDrainValue> b) {
1498 if (_bonus->_hp_drain_value != nullptr)
1499 remove_bonus(_bonus->_hp_drain_value);
1500 add_bonus(b);
1501 _bonus->_hp_drain_value = b;
1502 }
1503
1504 std::shared_ptr<Bonuses::BonusSPDrainPercent> bonus_sp_drain_percent() { return _bonus->_sp_drain_percent; }
1505 void set_bonus_sp_drain_percent(std::shared_ptr<Bonuses::BonusSPDrainPercent> b) {
1506 if (_bonus->_sp_drain_percent != nullptr)
1507 remove_bonus(_bonus->_sp_drain_percent);
1508 add_bonus(b);
1509 _bonus->_sp_drain_percent = b;
1510 }
1511
1512 std::shared_ptr<Bonuses::BonusSPDrainValue> bonus_sp_drain_value() { return _bonus->_bonus_sp_drain_value; }
1513 void set_bonus_sp_drain_value(std::shared_ptr<Bonuses::BonusSPDrainValue> b) {
1514 if (_bonus->_bonus_sp_drain_value != nullptr)
1515 remove_bonus(_bonus->_bonus_sp_drain_value);
1516 add_bonus(b);
1517 _bonus->_bonus_sp_drain_value = b;
1518 }
1519
1520 std::shared_ptr<Bonuses::BonusAddWeaponComaToElement> bonus_add_weapon_coma_to_element() { return _bonus->_add_weapon_coma_to_element; }
1521 void set_bonus_add_weapon_coma_to_element(std::shared_ptr<Bonuses::BonusAddWeaponComaToElement> b) {
1522 if (_bonus->_add_weapon_coma_to_element != nullptr)
1523 remove_bonus(_bonus->_add_weapon_coma_to_element);
1524 add_bonus(b);
1525 _bonus->_add_weapon_coma_to_element = b;
1526 }
1527
1528 std::shared_ptr<Bonuses::BonusAddWeaponComaToRace> bonus_add_weapon_coma_to_race() { return _bonus->_add_weapon_coma_to_race; }
1529 void set_bonus_add_weapon_coma_to_race(std::shared_ptr<Bonuses::BonusAddWeaponComaToRace> b) {
1530 if (_bonus->_add_weapon_coma_to_race != nullptr)
1531 remove_bonus(_bonus->_add_weapon_coma_to_race);
1532 add_bonus(b);
1533 _bonus->_add_weapon_coma_to_race = b;
1534 }
1535
1536 std::shared_ptr<Bonuses::BonusAddWeaponComaToSubElement> bonus_add_weapon_coma_to_sub_element() { return _bonus->_add_weapon_coma_to_sub_element; }
1537 void set_bonus_add_weapon_coma_to_sub_element(std::shared_ptr<Bonuses::BonusAddWeaponComaToSubElement> b) {
1538 if (_bonus->_add_weapon_coma_to_sub_element != nullptr)
1539 remove_bonus(_bonus->_add_weapon_coma_to_sub_element);
1540 add_bonus(b);
1541 _bonus->_add_weapon_coma_to_sub_element = b;
1542 }
1543
1544 std::shared_ptr<Bonuses::BonusAddWeaponComaToSubRace> bonus_add_weapon_coma_to_sub_race() { return _bonus->_add_weapon_coma_to_sub_race; }
1545 void set_bonus_add_weapon_coma_to_sub_race(std::shared_ptr<Bonuses::BonusAddWeaponComaToSubRace> b) {
1546 if (_bonus->_add_weapon_coma_to_sub_race != nullptr)
1547 remove_bonus(_bonus->_add_weapon_coma_to_sub_race);
1548 add_bonus(b);
1549 _bonus->_add_weapon_coma_to_sub_race = b;
1550 }
1551
1552 std::shared_ptr<Bonuses::BonusAddAttack> bonus_add_attack() { return _bonus->_add_attack; }
1553 void set_bonus_add_attack(std::shared_ptr<Bonuses::BonusAddAttack> b) {
1554 if (_bonus->_add_attack != nullptr)
1555 remove_bonus(_bonus->_add_attack);
1556 add_bonus(b);
1557 _bonus->_add_attack = b;
1558 }
1559
1560 std::shared_ptr<Bonuses::BonusAddAttackPercent> bonus_add_attack_percent() { return _bonus->_add_attack_percent; }
1561 void set_bonus_add_attack_percent(std::shared_ptr<Bonuses::BonusAddAttackPercent> b) {
1562 if (_bonus->_add_attack_percent != nullptr)
1563 remove_bonus(_bonus->_add_attack_percent);
1564 add_bonus(b);
1565 _bonus->_add_attack_percent = b;
1566 }
1567
1568 std::shared_ptr<Bonuses::BonusCriticalRace> bonus_critical_race() { return _bonus->_critical_race; }
1569 void set_bonus_critical_race(std::shared_ptr<Bonuses::BonusCriticalRace> b) {
1570 if (_bonus->_critical_race != nullptr)
1571 remove_bonus(_bonus->_critical_race);
1572 add_bonus(b);
1573 _bonus->_critical_race = b;
1574 }
1575
1576 std::shared_ptr<Bonuses::BonusCriticalRacePercent> bonus_critical_race_percent() { return _bonus->_critical_race_percent; }
1577 void set_bonus_critical_race_percent(std::shared_ptr<Bonuses::BonusCriticalRacePercent> b) {
1578 if (_bonus->_critical_race_percent != nullptr)
1579 remove_bonus(_bonus->_critical_race_percent);
1580 add_bonus(b);
1581 _bonus->_critical_race_percent = b;
1582 }
1583
1584 std::shared_ptr<Bonuses::BonusDamageReductionAgainstSize> bonus_damage_reduction_against_size() { return _bonus->_damage_reduction_against_size; }
1585 void set_bonus_damage_reduction_against_size(std::shared_ptr<Bonuses::BonusDamageReductionAgainstSize> b) {
1586 if (_bonus->_damage_reduction_against_size != nullptr)
1587 remove_bonus(_bonus->_damage_reduction_against_size);
1588 add_bonus(b);
1589 _bonus->_damage_reduction_against_size = b;
1590 }
1591
1592 std::shared_ptr<Bonuses::BonusMagicDamageReductionAgainstSize> bonus_magic_damage_reduction_against_size() { return _bonus->_magic_damage_reduction_against_size; }
1593 void set_bonus_magic_damage_reduction_against_size(std::shared_ptr<Bonuses::BonusMagicDamageReductionAgainstSize> b) {
1594 if (_bonus->_magic_damage_reduction_against_size != nullptr)
1595 remove_bonus(_bonus->_magic_damage_reduction_against_size);
1596 add_bonus(b);
1597 _bonus->_magic_damage_reduction_against_size = b;
1598 }
1599
1600 std::shared_ptr<Bonuses::BonusExpPercentPerRace> bonus_exp_percent_per_race() { return _bonus->_exp_percent_per_race; }
1601 void set_bonus_exp_percent_per_race(std::shared_ptr<Bonuses::BonusExpPercentPerRace> b) {
1602 if (_bonus->_exp_percent_per_race != nullptr)
1603 remove_bonus(_bonus->_exp_percent_per_race);
1604 add_bonus(b);
1605 _bonus->_exp_percent_per_race = b;
1606 }
1607
1608 std::shared_ptr<Bonuses::BonusJobPercentPerRace> bonus_job_percent_per_race() { return _bonus->_job_percent_per_race; }
1609 void set_bonus_job_percent_per_race(std::shared_ptr<Bonuses::BonusJobPercentPerRace> b) {
1610 if (_bonus->_job_percent_per_race != nullptr)
1611 remove_bonus(_bonus->_job_percent_per_race);
1612 add_bonus(b);
1613 _bonus->_job_percent_per_race = b;
1614 }
1615
1616 std::shared_ptr<Bonuses::BonusSkillAttack> bonus_skill_attack() { return _bonus->_skill_attack; }
1617 void set_bonus_skill_attack(std::shared_ptr<Bonuses::BonusSkillAttack> b) {
1618 if (_bonus->_skill_attack != nullptr)
1619 remove_bonus(_bonus->_skill_attack);
1620 add_bonus(b);
1621 _bonus->_skill_attack = b;
1622 }
1623
1624 std::shared_ptr<Bonuses::BonusReduceSPConsumptionOfSkillByPercent> bonus_reduce_sp_consumption_of_skill_by_percent() { return _bonus->_reduce_sp_consumption_of_skill_by_percent; }
1625 void set_bonus_reduce_sp_consumption_of_skill_by_percent(std::shared_ptr<Bonuses::BonusReduceSPConsumptionOfSkillByPercent> b) {
1626 if (_bonus->_reduce_sp_consumption_of_skill_by_percent != nullptr)
1627 remove_bonus(_bonus->_reduce_sp_consumption_of_skill_by_percent);
1628 add_bonus(b);
1629 _bonus->_reduce_sp_consumption_of_skill_by_percent = b;
1630 }
1631
1632 std::shared_ptr<Bonuses::BonusReduceSPConsumptionOfSkill> bonus_reduce_sp_consumption_of_skill() { return _bonus->_reduce_sp_consumption_of_skill; }
1633 void set_bonus_reduce_sp_consumption_of_skill(std::shared_ptr<Bonuses::BonusReduceSPConsumptionOfSkill> b) {
1634 if (_bonus->_reduce_sp_consumption_of_skill != nullptr)
1635 remove_bonus(_bonus->_reduce_sp_consumption_of_skill);
1636 add_bonus(b);
1637 _bonus->_reduce_sp_consumption_of_skill = b;
1638 }
1639
1640 std::shared_ptr<Bonuses::BonusLearnedSkillHeal> bonus_learned_skill_heal() { return _bonus->_learned_skill_heal; }
1641 void set_bonus_learned_skill_heal(std::shared_ptr<Bonuses::BonusLearnedSkillHeal> b) {
1642 if (_bonus->_learned_skill_heal != nullptr)
1643 remove_bonus(_bonus->_learned_skill_heal);
1644 add_bonus(b);
1645 _bonus->_learned_skill_heal = b;
1646 }
1647
1648 std::shared_ptr<Bonuses::BonusHealOfSkillCastedOnSelf> bonus_heal_of_skill_casted_on_self() { return _bonus->_heal_of_skill_casted_on_self; }
1649 void set_bonus_heal_of_skill_casted_on_self(std::shared_ptr<Bonuses::BonusHealOfSkillCastedOnSelf> b) {
1650 if (_bonus->_heal_of_skill_casted_on_self != nullptr)
1651 remove_bonus(_bonus->_heal_of_skill_casted_on_self);
1652 add_bonus(b);
1653 _bonus->_heal_of_skill_casted_on_self = b;
1654 }
1655
1656 std::shared_ptr<Bonuses::BonusSkillKnockback> bonus_skill_knockback() { return _bonus->_skill_knockback; }
1657 void set_bonus_skill_knockback(std::shared_ptr<Bonuses::BonusSkillKnockback> b) {
1658 if (_bonus->_skill_knockback != nullptr)
1659 remove_bonus(_bonus->_skill_knockback);
1660 add_bonus(b);
1661 _bonus->_skill_knockback = b;
1662 }
1663
1664 std::shared_ptr<Bonuses::BonusSkillCastPercent> bonus_skill_cast_percent() { return _bonus->_skill_cast_percent; }
1665 void set_bonus_skill_cast_percent(std::shared_ptr<Bonuses::BonusSkillCastPercent> b) {
1666 if (_bonus->_skill_cast_percent != nullptr)
1667 remove_bonus(_bonus->_skill_cast_percent);
1668 add_bonus(b);
1669 _bonus->_skill_cast_percent = b;
1670 }
1671
1672 std::shared_ptr<Bonuses::BonusSkillCooldown> bonus_skill_cooldown() { return _bonus->_skill_cooldown; }
1673 void set_bonus_skill_cooldown(std::shared_ptr<Bonuses::BonusSkillCooldown> b) {
1674 if (_bonus->_skill_cooldown != nullptr)
1675 remove_bonus(_bonus->_skill_cooldown);
1676 add_bonus(b);
1677 _bonus->_skill_cooldown = b;
1678 }
1679
1680 std::shared_ptr<Bonuses::BonusSkillFixCastPercent> bonus_skill_fix_cast_percent() { return _bonus->_skill_fix_cast_percent; }
1681 void set_bonus_skill_fix_cast_percent(std::shared_ptr<Bonuses::BonusSkillFixCastPercent> b) {
1682 if (_bonus->_skill_fix_cast_percent != nullptr)
1683 remove_bonus(_bonus->_skill_fix_cast_percent);
1684 add_bonus(b);
1685 _bonus->_skill_fix_cast_percent = b;
1686 }
1687
1688 std::shared_ptr<Bonuses::BonusSkillVariableCastPercent> bonus_skill_variable_cast_percent() { return _bonus->_skill_variable_cast_percent; }
1689 void set_bonus_skill_variable_cast_percent(std::shared_ptr<Bonuses::BonusSkillVariableCastPercent> b) {
1690 if (_bonus->_skill_variable_cast_percent != nullptr)
1691 remove_bonus(_bonus->_skill_variable_cast_percent);
1692 add_bonus(b);
1693 _bonus->_skill_variable_cast_percent = b;
1694 }
1695
1696 std::shared_ptr<Bonuses::BonusResistSkillDamagePercent> bonus_resist_skill_damage_percent() { return _bonus->_resist_skill_damage_percent; }
1697 void set_bonus_resist_skill_damage_percent(std::shared_ptr<Bonuses::BonusResistSkillDamagePercent> b) {
1698 if (_bonus->_resist_skill_damage_percent != nullptr)
1699 remove_bonus(_bonus->_resist_skill_damage_percent);
1700 add_bonus(b);
1701 _bonus->_resist_skill_damage_percent = b;
1702 }
1703
1704 std::shared_ptr<Bonuses::BonusIgnoreDefenseFromElement> bonus_ignore_defense_from_element() { return _bonus->_ignore_defense_from_element; }
1705 void set_bonus_ignore_defense_from_element(std::shared_ptr<Bonuses::BonusIgnoreDefenseFromElement> b) {
1706 if (_bonus->_ignore_defense_from_element != nullptr)
1707 remove_bonus(_bonus->_ignore_defense_from_element);
1708 add_bonus(b);
1709 _bonus->_ignore_defense_from_element = b;
1710 }
1711
1712 std::shared_ptr<Bonuses::BonusIgnoreDefenseFromRace> bonus_ignore_defense_from_race() { return _bonus->_ignore_defense_from_race; }
1713 void set_bonus_ignore_defense_from_race(std::shared_ptr<Bonuses::BonusIgnoreDefenseFromRace> b) {
1714 if (_bonus->_ignore_defense_from_race != nullptr)
1715 remove_bonus(_bonus->_ignore_defense_from_race);
1716 add_bonus(b);
1717 _bonus->_ignore_defense_from_race = b;
1718 }
1719
1720 std::shared_ptr<Bonuses::BonusIgnoreMagicDefenseFromElement> bonus_ignore_magic_defense_from_element() { return _bonus->_ignore_magic_defense_from_element; }
1721 void set_bonus_ignore_magic_defense_from_element(std::shared_ptr<Bonuses::BonusIgnoreMagicDefenseFromElement> b) {
1722 if (_bonus->_ignore_magic_defense_from_element != nullptr)
1723 remove_bonus(_bonus->_ignore_magic_defense_from_element);
1724 add_bonus(b);
1725 _bonus->_ignore_magic_defense_from_element = b;
1726 }
1727
1728 std::shared_ptr<Bonuses::BonusIgnoreMagicDefenseFromRace> bonus_ignore_magic_defense_from_race() { return _bonus->_ignore_magic_defense_from_race; }
1729 void set_bonus_ignore_magic_defense_from_race(std::shared_ptr<Bonuses::BonusIgnoreMagicDefenseFromRace> b) {
1730 if (_bonus->_ignore_magic_defense_from_race != nullptr)
1731 remove_bonus(_bonus->_ignore_magic_defense_from_race);
1732 add_bonus(b);
1733 _bonus->_ignore_magic_defense_from_race = b;
1734 }
1735
1736 std::shared_ptr<Bonuses::BonusAddEleWeaponDamagePercent> bonus_add_ele_weapon_damage_percent() { return _bonus->_add_ele_weapon_damage_percent; }
1737 void set_bonus_add_ele_weapon_damage_percent(std::shared_ptr<Bonuses::BonusAddEleWeaponDamagePercent> b) {
1738 if (_bonus->_add_ele_weapon_damage_percent != nullptr)
1739 remove_bonus(_bonus->_add_ele_weapon_damage_percent);
1740 add_bonus(b);
1741 _bonus->_add_ele_weapon_damage_percent = b;
1742 }
1743
1744 std::shared_ptr<Bonuses::BonusAddEleMagicDamagePercent> bonus_add_ele_magic_damage_percent() { return _bonus->_add_ele_magic_damage_percent; }
1745 void set_bonus_add_ele_magic_damage_percent(std::shared_ptr<Bonuses::BonusAddEleMagicDamagePercent> b) {
1746 if (_bonus->_add_ele_magic_damage_percent != nullptr)
1747 remove_bonus(_bonus->_add_ele_magic_damage_percent);
1748 add_bonus(b);
1749 _bonus->_add_ele_magic_damage_percent = b;
1750 }
1751
1752 std::shared_ptr<Bonuses::BonusAutoSpellOnSkill> bonus_auto_spell_on_skill() { return _bonus->_auto_spell_on_skill; }
1753 void set_bonus_auto_spell_on_skill(std::shared_ptr<Bonuses::BonusAutoSpellOnSkill> b) {
1754 if (_bonus->_auto_spell_on_skill != nullptr)
1755 remove_bonus(_bonus->_auto_spell_on_skill);
1756 add_bonus(b);
1757 _bonus->_auto_spell_on_skill = b;
1758 }
1759
1760 std::shared_ptr<Bonuses::BonusAutoSpellOnAttack> bonus_auto_spell_on_attack() { return _bonus->_auto_spell_on_attack; }
1761 void set_bonus_auto_spell_on_attack(std::shared_ptr<Bonuses::BonusAutoSpellOnAttack> b) {
1762 if (_bonus->_auto_spell_on_attack != nullptr)
1763 remove_bonus(_bonus->_auto_spell_on_attack);
1764 add_bonus(b);
1765 _bonus->_auto_spell_on_attack = b;
1766 }
1767
1768 std::shared_ptr<Bonuses::BonusAutoSpellOnReceiveDamage> bonus_auto_spell_on_receive_damage() { return _bonus->_auto_spell_on_receive_damage; }
1769 void set_bonus_auto_spell_on_receive_damage(std::shared_ptr<Bonuses::BonusAutoSpellOnReceiveDamage> b) {
1770 if (_bonus->_auto_spell_on_receive_damage != nullptr)
1771 remove_bonus(_bonus->_auto_spell_on_receive_damage);
1772 add_bonus(b);
1773 _bonus->_auto_spell_on_receive_damage = b;
1774 }
1775
1776 std::shared_ptr<Bonuses::BonusAutoSpellOnSelf> bonus_auto_spell_on_self() { return _bonus->_auto_spell_on_self; }
1777 void set_bonus_auto_spell_on_self(std::shared_ptr<Bonuses::BonusAutoSpellOnSelf> b) {
1778 if (_bonus->_auto_spell_on_self != nullptr)
1779 remove_bonus(_bonus->_auto_spell_on_self);
1780 add_bonus(b);
1781 _bonus->_auto_spell_on_self = b;
1782 }
1783
1784protected:
1785 std::shared_ptr<Unit> unit() { return _unit.lock(); }
1787 bool _is_initialized{ false };
1788
1789private:
1790 std::shared_ptr<StatusRegistry> _status_registry{ nullptr };
1791 std::weak_ptr<Unit> _unit;
1792 // Attributes
1793 std::shared_ptr<Strength> _str;
1794 std::shared_ptr<Agility> _agi;
1795 std::shared_ptr<Vitality> _vit;
1796 std::shared_ptr<Intelligence> _int;
1797 std::shared_ptr<Dexterity> _dex;
1798 std::shared_ptr<Luck> _luk;
1799 std::shared_ptr<StrengthPointCost> _str_cost;
1800 std::shared_ptr<AgilityPointCost> _agi_cost;
1801 std::shared_ptr<VitalityPointCost> _vit_cost;
1802 std::shared_ptr<IntelligencePointCost> _int_cost;
1803 std::shared_ptr<DexterityPointCost> _dex_cost;
1804 std::shared_ptr<LuckPointCost> _luk_cost;
1805 std::shared_ptr<StatusPoint> _status_point;
1806 std::shared_ptr<SkillPoint> _skill_point;
1807 std::shared_ptr<MaxHP> _max_hp;
1808 std::shared_ptr<MaxSP> _max_sp;
1809 std::shared_ptr<CurrentHP> _current_hp;
1810 std::shared_ptr<CurrentSP> _current_sp;
1811 std::shared_ptr<BaseLevel> _base_level;
1812 std::shared_ptr<JobLevel> _job_level;
1813 std::shared_ptr<BaseExperience> _base_exp;
1814 std::shared_ptr<JobExperience> _job_exp;
1815 std::shared_ptr<NextBaseExperience> _next_base_exp;
1816 std::shared_ptr<NextJobExperience> _next_job_exp;
1817 std::shared_ptr<MovementSpeed> _movement_speed;
1818 std::shared_ptr<MaxWeight> _max_weight;
1819 std::shared_ptr<CurrentWeight> _current_weight;
1820 std::shared_ptr<AttackRange> _attack_range;
1821 /* Sub Attributes */
1822 std::shared_ptr<StatusATK> _status_atk;
1823 std::shared_ptr<EquipATK> _equip_atk;
1824 std::shared_ptr<StatusMATK> _status_matk;
1825 std::shared_ptr<EquipMATK> _equip_matk;
1826 std::shared_ptr<SoftDEF> _soft_def;
1827 std::shared_ptr<HardDEF> _hard_def;
1828 std::shared_ptr<SoftMDEF> _soft_mdef;
1829 std::shared_ptr<HardMDEF> _hard_mdef;
1830 std::shared_ptr<HIT> _hit;
1831 std::shared_ptr<CRIT> _crit;
1832 std::shared_ptr<FLEE> _flee;
1833 std::shared_ptr<AttackSpeed> _aspd;
1834 std::shared_ptr<HPRegeneration> _hp_regeneration;
1835 std::shared_ptr<SPRegeneration> _sp_regeneration;
1836 /* Appearance */
1837 std::shared_ptr<BaseAppearance> _base_appearance;
1838 std::shared_ptr<HairColor> _hair_color;
1839 std::shared_ptr<ClothColor> _cloth_color;
1840 std::shared_ptr<WeaponSprite> _weapon_sprite;
1841 std::shared_ptr<ShieldSprite> _shield_sprite;
1842 std::shared_ptr<RobeSprite> _robe_sprite;
1843 std::shared_ptr<HeadTopSprite> _head_top_sprite;
1844 std::shared_ptr<HeadMidSprite> _head_mid_sprite;
1845 std::shared_ptr<HeadBottomSprite> _head_bottom_sprite;
1846 std::shared_ptr<HairStyle> _hair_style;
1847 std::shared_ptr<BodyStyle> _body_style;
1848 /* Misc */
1849 std::shared_ptr<Zeny> _zeny;
1850 std::shared_ptr<Honor> _honor;
1851 std::shared_ptr<Manner> _manner;
1852 std::shared_ptr<Virtue> _virtue;
1853 /* Combat Status */
1854 std::shared_ptr<AttackDelay> _attack_delay;
1855 std::shared_ptr<DamageWalkDelay> _damage_walk_delay;
1856 std::shared_ptr<BaseAttack> _base_attack;
1857 std::shared_ptr<WeaponAttackLeft> _weapon_attack_left;
1858 std::shared_ptr<WeaponAttackRight> _weapon_attack_right;
1859 std::shared_ptr<WeaponAttackCombined> _weapon_attack_combined;
1860 std::shared_ptr<UnitSize> _size;
1861 /* Mobs */
1862 std::shared_ptr<MobWeaponAttack> _creature_weapon_attack;
1863 std::shared_ptr<MobWeaponAttack> _creature_weapon_attack_magic;
1864 std::shared_ptr<MobAttackDamage> _creature_attack_damage;
1865 std::shared_ptr<MobMagicAttackDamage> _creature_magic_attack_damage;
1866 std::shared_ptr<MobViewRange> _creature_view_range;
1867 std::shared_ptr<MobChaseRange> _creature_chase_range;
1868 std::shared_ptr<MobPrimaryRace> _creature_primary_race;
1869 std::shared_ptr<MobSecondaryRace> _creature_secondary_race;
1870 std::shared_ptr<MobElement> _creature_element;
1871 std::shared_ptr<MobElementLevel> _creature_element_level;
1872 std::shared_ptr<MobMode> _creature_mode;
1873
1874 std::vector<std::shared_ptr<Attribute>> _attributes;
1875 std::vector<std::shared_ptr<Appearance>> _appearances;
1876 std::vector<std::shared_ptr<Bonuses::Bonus>> _bonuses;
1877 std::vector<std::shared_ptr<Bonuses::IBonusArray>> _bonus_arrays;
1878
1879 struct bonuses {
1880 // Bonuses
1881 std::shared_ptr<Bonuses::BonusAllStatus> _all_status;
1882 std::shared_ptr<Bonuses::BonusAttackElement> _attack_element;
1883 std::shared_ptr<Bonuses::BonusDefenseElement> _defense_element;
1884 std::shared_ptr<Bonuses::BonusCastPercent> _cast_percent;
1885 std::shared_ptr<Bonuses::BonusMaxHPPercent> _max_hp_percent;
1886 std::shared_ptr<Bonuses::BonusMaxSPPercent> _max_sp_percent;
1887 std::shared_ptr<Bonuses::BonusSPPercent> _sp_percent;
1888 std::shared_ptr<Bonuses::BonusAttackRange> _attack_range;
1889 std::shared_ptr<Bonuses::BonusAttackRangePercent> _attack_range_percent;
1890 std::shared_ptr<Bonuses::BonusAddMovementSpeedPercent> _bonus_add_movement_speed_percent;
1891 std::shared_ptr<Bonuses::BonusAttackSpeedPercent> _attack_speed_percent;
1892 std::shared_ptr<Bonuses::BonusHPRecoveryPercent> _hp_recovery_percent;
1893 std::shared_ptr<Bonuses::BonusSPRecoveryPercent> _sp_recovery_percent;
1894 std::shared_ptr<Bonuses::BonusCriticalDefense> _critical_defense;
1895 std::shared_ptr<Bonuses::BonusMeleeDefense> _melee_defense;
1896 std::shared_ptr<Bonuses::BonusRangedDefense> _ranged_defense;
1897 std::shared_ptr<Bonuses::BonusDoubleAttackPercent> _double_attack_percent;
1898 std::shared_ptr<Bonuses::BonusMagicAttackPercent> _magic_attack_percent;
1899 std::shared_ptr<Bonuses::BonusAttackPercent> _attack_percent;
1900 std::shared_ptr<Bonuses::BonusMagicDefensePercent> _magic_defense_percent;
1901 std::shared_ptr<Bonuses::BonusMiscDefensePercent> _misc_defense_percent;
1902 std::shared_ptr<Bonuses::BonusPerfectHitPercent> _perfect_hit_percent;
1903 std::shared_ptr<Bonuses::BonusCriticalPercent> _critical_percent;
1904 std::shared_ptr<Bonuses::BonusGetZenyNum> _get_zeny_num;
1905 std::shared_ptr<Bonuses::BonusAttackOnDefenseRatioForElement> _attack_on_defense_ratio_for_element;
1906 std::shared_ptr<Bonuses::BonusAttackOnDefenseRatioForRace> _attack_on_defense_ratio_for_race;
1907 std::shared_ptr<Bonuses::BonusHitPercent> _hit_percent;
1908 std::shared_ptr<Bonuses::BonusFleePercent> _flee_percent;
1909 std::shared_ptr<Bonuses::BonusPerfectDodgePercent> _perfect_dodge_percent;
1910 std::shared_ptr<Bonuses::BonusSoftDefensePercent> _soft_defense_percent;
1911 std::shared_ptr<Bonuses::BonusHardDefensePercent> _hard_defense_percent;
1912 std::shared_ptr<Bonuses::BonusSoftMagicalDefensePercent> _soft_magical_defense_percent;
1913 std::shared_ptr<Bonuses::BonusHardMagicalDefensePercent> _hard_magical_defense_percent;
1914 std::shared_ptr<Bonuses::BonusRestartWithFullRecovery> _restart_with_full_recovery;
1915 std::shared_ptr<Bonuses::BonusCastCancelImmunity> _cast_cancel_immunity;
1916 std::shared_ptr<Bonuses::BonusSizeModifierImmunity> _size_modifier_immunity;
1917 std::shared_ptr<Bonuses::BonusMagicDamageImmunity> _magic_damage_immunity;
1918 std::shared_ptr<Bonuses::BonusWeaponDamageImmunity> _weapon_damage_immunity;
1919 std::shared_ptr<Bonuses::BonusGemstoneImmunity> _gemstone_immunity;
1920 std::shared_ptr<Bonuses::BonusGearFuelImmunity> _gear_fuel_immunity;
1921 std::shared_ptr<Bonuses::BonusInfiniteEndure> _infinite_endure;
1922 std::shared_ptr<Bonuses::BonusUnbreakableWeapon> _unbreakable_weapon;
1923 std::shared_ptr<Bonuses::BonusUnbreakableArmor> _unbreakable_armor;
1924 std::shared_ptr<Bonuses::BonusUnbreakableHelm> _unbreakable_helm;
1925 std::shared_ptr<Bonuses::BonusUnbreakableShield> _unbreakable_shield;
1926 std::shared_ptr<Bonuses::BonusSPGainOnMobKill> _sp_gain_on_mob_kill;
1927 std::shared_ptr<Bonuses::BonusHPGainOnMobKill> _hp_gain_on_mob_kill;
1928 std::shared_ptr<Bonuses::BonusDamageSplashRange> _damage_splash_range;
1929 std::shared_ptr<Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf> _melee_weapon_damage_reflect_percent_on_self;
1930 std::shared_ptr<Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf> _ranged_weapon_damage_reflect_percent_on_self;
1931 std::shared_ptr<Bonuses::BonusWeaponBreakPercent> _weapon_break_percent;
1932 std::shared_ptr<Bonuses::BonusArmorBreakPercent> _armor_break_percent;
1933 std::shared_ptr<Bonuses::BonusAddStealPercent> _add_steal_percent;
1934 std::shared_ptr<Bonuses::BonusCriticalDamagePercent> _critical_damage_percent;
1935 std::shared_ptr<Bonuses::BonusDisableHPRecovery> _disable_hp_recovery;
1936 std::shared_ptr<Bonuses::BonusDisableSPRecovery> _disable_sp_recovery;
1937 std::shared_ptr<Bonuses::BonusMagicDamageReflectPercentOnSelf> _magic_damage_reflect_percent_on_self;
1938 std::shared_ptr<Bonuses::BonusShortWeaponDamagePercent> _short_weapon_damage_percent;
1939 std::shared_ptr<Bonuses::BonusLongWeaponDamagePercent> _long_weapon_damage_percent;
1940 std::shared_ptr<Bonuses::BonusItemUsageImmunity> _item_usage_immunity;
1941 std::shared_ptr<Bonuses::BonusKnockBackImmunity> _knockback_immunity;
1942 // Bonus2
1943 std::shared_ptr<Bonuses::BonusAddAttackPercentageToElement> _add_attack_percentage_to_element;
1944 std::shared_ptr<Bonuses::BonusAddAttackPercentageToRace> _add_attack_percentage_to_race;
1945 std::shared_ptr<Bonuses::BonusAddAttackPercentageToSize> _add_attack_percentage_to_size;
1946 std::shared_ptr<Bonuses::BonusSubAttackPercentageFromElement> _sub_attack_percentage_from_element;
1947 std::shared_ptr<Bonuses::BonusSubAttackPercentageFromRace> _sub_attack_percentage_from_race;
1948 std::shared_ptr<Bonuses::BonusAddEffectOnDamage> _add_effect_on_damage;
1949 std::shared_ptr<Bonuses::BonusAddEffectWhenDamaged> _add_effect_when_damaged;
1950 std::shared_ptr<Bonuses::BonusRessistEffect> _ressist_effect;
1951 std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToElement> _add_magic_attack_percentage_to_element;
1952 std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToRace> _add_magic_attack_percentage_to_race;
1953 std::shared_ptr<Bonuses::BonusAddMagicAttackPercentageToSize> _add_magic_attack_percentage_to_size;
1954 std::shared_ptr<Bonuses::BonusAddEffectOnMagicAttack> _add_effect_on_magic_attack;
1955 std::shared_ptr<Bonuses::BonusResistMagicAttackFromRace> _resist_magic_attack_from_race;
1956 std::shared_ptr<Bonuses::BonusAddDamageToClass> _add_damage_to_class;
1957 std::shared_ptr<Bonuses::BonusAddMagicDamageToClass> _add_magic_damage_to_class;
1958 std::shared_ptr<Bonuses::BonusAddDefenseToClass> _add_defense_to_class;
1959 std::shared_ptr<Bonuses::BonusAddMagicalDefenseToClass> _add_magical_defense_to_class;
1960 std::shared_ptr<Bonuses::BonusHPDrainPercent> _hp_drain_percent;
1961 std::shared_ptr<Bonuses::BonusHPDrainValue> _hp_drain_value;
1962 std::shared_ptr<Bonuses::BonusSPDrainPercent> _sp_drain_percent;
1963 std::shared_ptr<Bonuses::BonusSPDrainValue> _bonus_sp_drain_value;
1964 std::shared_ptr<Bonuses::BonusAddWeaponComaToElement> _add_weapon_coma_to_element;
1965 std::shared_ptr<Bonuses::BonusAddWeaponComaToRace> _add_weapon_coma_to_race;
1966 std::shared_ptr<Bonuses::BonusAddWeaponComaToSubElement> _add_weapon_coma_to_sub_element;
1967 std::shared_ptr<Bonuses::BonusAddWeaponComaToSubRace> _add_weapon_coma_to_sub_race;
1968 std::shared_ptr<Bonuses::BonusAddAttack> _add_attack;
1969 std::shared_ptr<Bonuses::BonusAddAttackPercent> _add_attack_percent;
1970 std::shared_ptr<Bonuses::BonusCriticalRace> _critical_race;
1971 std::shared_ptr<Bonuses::BonusCriticalRacePercent> _critical_race_percent;
1972 std::shared_ptr<Bonuses::BonusDamageReductionAgainstSize> _damage_reduction_against_size;
1973 std::shared_ptr<Bonuses::BonusMagicDamageReductionAgainstSize> _magic_damage_reduction_against_size;
1974 std::shared_ptr<Bonuses::BonusExpPercentPerRace> _exp_percent_per_race;
1975 std::shared_ptr<Bonuses::BonusJobPercentPerRace> _job_percent_per_race;
1976 std::shared_ptr<Bonuses::BonusSkillAttack> _skill_attack;
1977 std::shared_ptr<Bonuses::BonusReduceSPConsumptionOfSkillByPercent> _reduce_sp_consumption_of_skill_by_percent;
1978 std::shared_ptr<Bonuses::BonusReduceSPConsumptionOfSkill> _reduce_sp_consumption_of_skill;
1979 std::shared_ptr<Bonuses::BonusLearnedSkillHeal> _learned_skill_heal;
1980 std::shared_ptr<Bonuses::BonusHealOfSkillCastedOnSelf> _heal_of_skill_casted_on_self;
1981 std::shared_ptr<Bonuses::BonusSkillKnockback> _skill_knockback;
1982 std::shared_ptr<Bonuses::BonusSkillCastPercent> _skill_cast_percent;
1983 std::shared_ptr<Bonuses::BonusSkillCooldown> _skill_cooldown;
1984 std::shared_ptr<Bonuses::BonusSkillFixCastPercent> _skill_fix_cast_percent;
1985 std::shared_ptr<Bonuses::BonusSkillVariableCastPercent> _skill_variable_cast_percent;
1986 std::shared_ptr<Bonuses::BonusResistSkillDamagePercent> _resist_skill_damage_percent;
1987 std::shared_ptr<Bonuses::BonusIgnoreDefenseFromElement> _ignore_defense_from_element;
1988 std::shared_ptr<Bonuses::BonusIgnoreDefenseFromRace> _ignore_defense_from_race;
1989 std::shared_ptr<Bonuses::BonusIgnoreMagicDefenseFromElement> _ignore_magic_defense_from_element;
1990 std::shared_ptr<Bonuses::BonusIgnoreMagicDefenseFromRace> _ignore_magic_defense_from_race;
1991 std::shared_ptr<Bonuses::BonusAddEleWeaponDamagePercent> _add_ele_weapon_damage_percent;
1992 std::shared_ptr<Bonuses::BonusAddEleMagicDamagePercent> _add_ele_magic_damage_percent;
1993 std::shared_ptr<Bonuses::BonusAutoSpellOnSkill> _auto_spell_on_skill;
1994 std::shared_ptr<Bonuses::BonusAutoSpellOnAttack> _auto_spell_on_attack;
1995 std::shared_ptr<Bonuses::BonusAutoSpellOnReceiveDamage> _auto_spell_on_receive_damage;
1996 std::shared_ptr<Bonuses::BonusAutoSpellOnSelf> _auto_spell_on_self;
1997 // Bonus3
1998 std::shared_ptr<Bonuses::BonusHPVanishPercent> _hp_vanish_percent;
1999 std::shared_ptr<Bonuses::BonusSPVanishPercent> _sp_vanish_percent;
2000 std::shared_ptr<Bonuses::BonusRaise> _raise;
2001 std::shared_ptr<Bonuses::BonusAddItemDropOnMonsterKill> _add_item_drop_on_monster_kill;
2002 std::shared_ptr<Bonuses::BonusHPDrainOnMonsterKill> _hp_drain_on_monster_kill;
2003 std::shared_ptr<Bonuses::BonusSPDrainOnMonsterKill> _sp_drain_on_monster_kill;
2004 };
2005
2006 std::shared_ptr<bonuses> _bonus;
2007};
2008}
2009}
2010}
2011
2012#endif /* Status_hpp */
unit_type
Definition: UnitDefinitions.hpp:44
@ UNIT_PLAYER
Definition: UnitDefinitions.hpp:45
unit_appearance_type
Definition: UnitDefinitions.hpp:448
status_point_type
Definition: UnitDefinitions.hpp:87
Definition: Attribute.hpp:233
void set_source(const std::string &source)
Definition: Status.hpp:118
status_operation_type get_type()
Definition: Status.hpp:109
StatusOperation(Attribute *attribute, status_operation_type type, uint32_t value, std::string source)
Definition: Status.hpp:95
void set_duration(uint64_t duration)
Definition: Status.hpp:112
status_operation_type _type
Definition: Status.hpp:123
StatusOperation(Attribute *attribute, status_operation_type type, uint32_t value, uint64_t duration, std::string source)
Definition: Status.hpp:97
StatusOperation(Attribute *attribute, status_operation_type type, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.hpp:99
std::string get_source()
Definition: Status.hpp:119
void set_priority(uint16_t priority)
Definition: Status.hpp:107
void set_interval(uint64_t interval)
Definition: Status.hpp:115
void add_to_equip(Attribute *attribute, uint32_t value, std::string source)
Definition: Status.cpp:60
void subtract_from_base(Attribute *attribute, uint32_t value, std::string source)
Definition: Status.cpp:55
void sub_from_base_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source)
Definition: Status.cpp:85
std::priority_queue< StatusOperation *, std::vector< StatusOperation * >, CompareStatusOperation > _status_operation_queue
Definition: Status.hpp:165
status_operation_type
Definition: Status.hpp:71
@ STATUS_OPERATION_SUBTRACT_FROM_STATUS_TEMPORARY
Definition: Status.hpp:83
@ STATUS_OPERATION_ADD_TO_BASE_TEMPORARY
Definition: Status.hpp:78
@ STATUS_OPERATION_SUBTRACT_FROM_BASE_TEMPORARY
Definition: Status.hpp:79
@ STATUS_OPERATION_ADD_TO_EQUIP_INTERVAL
Definition: Status.hpp:86
@ STATUS_OPERATION_SUBTRACT_FROM_EQUIP_INTERVAL
Definition: Status.hpp:87
@ STATUS_OPERATION_SUBTRACT_FROM_BASE
Definition: Status.hpp:73
@ STATUS_OPERATION_ADD_TO_BASE
Definition: Status.hpp:72
@ STATUS_OPERATION_ADD_TO_EQUIP_TEMPORARY
Definition: Status.hpp:80
@ STATUS_OPERATION_SUBTRACT_FROM_EQUIP
Definition: Status.hpp:75
@ STATUS_OPERATION_SUBTRACT_FROM_BASE_INTERVAL
Definition: Status.hpp:85
@ STATUS_OPERATION_ADD_TO_BASE_INTERVAL
Definition: Status.hpp:84
@ STATUS_OPERATION_ADD_TO_STATUS_TEMPORARY
Definition: Status.hpp:82
@ STATUS_OPERATION_ADD_TO_STATUS
Definition: Status.hpp:76
@ STATUS_OPERATION_SUBTRACT_FROM_EQUIP_TEMPORARY
Definition: Status.hpp:81
@ STATUS_OPERATION_ADD_TO_EQUIP
Definition: Status.hpp:74
@ STATUS_OPERATION_SUBTRACT_FROM_STATUS_INTERVAL
Definition: Status.hpp:89
@ STATUS_OPERATION_SUBTRACT_FROM_STATUS
Definition: Status.hpp:77
@ STATUS_OPERATION_ADD_TO_STATUS_INTERVAL
Definition: Status.hpp:88
void add_to_base_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.cpp:110
void sub_from_equip_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source)
Definition: Status.cpp:95
void sub_from_equip_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.cpp:125
void add_to_base(Attribute *attribute, uint32_t value, std::string source)
Definition: Status.cpp:50
void subtract_from_equip(Attribute *attribute, uint32_t value, std::string source)
Definition: Status.cpp:65
void sub_from_status_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source)
Definition: Status.cpp:105
void sub_from_status_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.cpp:135
void sub_from_base_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.cpp:115
void process_queue()
Definition: Status.cpp:237
StatusOperation * get_next_operation()
Definition: Status.hpp:161
void add_to_equip_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.cpp:120
void subtract_from_status(Attribute *attribute, uint32_t value, std::string source)
Definition: Status.cpp:75
bool has_next_operation()
Definition: Status.hpp:160
void add_to_status_interval(Attribute *attribute, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
Definition: Status.cpp:130
void add_to_status(Attribute *attribute, uint32_t value, std::string source)
Definition: Status.cpp:70
void add_to_base_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source)
Definition: Status.cpp:80
void add_to_status_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source)
Definition: Status.cpp:100
void add_to_equip_temporary(Attribute *attribute, uint32_t value, uint64_t duration, std::string source)
Definition: Status.cpp:90
Definition: Status.hpp:65
void set_job_experience(std::shared_ptr< JobExperience > jexp)
Definition: Status.hpp:357
std::shared_ptr< WeaponAttackCombined > weapon_attack_combined()
Definition: Status.hpp:638
std::shared_ptr< MaxWeight > max_weight()
Definition: Status.hpp:388
std::shared_ptr< MobSecondaryRace > creature_secondary_race()
Definition: Status.hpp:711
std::shared_ptr< Bonuses::BonusRangedDefense > bonus_ranged_defense()
Definition: Status.hpp:920
std::shared_ptr< JobExperience > _job_exp
Definition: Status.hpp:1814
std::shared_ptr< WeaponAttackLeft > weapon_attack_left()
Definition: Status.hpp:622
std::shared_ptr< WeaponAttackRight > weapon_attack_right()
Definition: Status.hpp:630
std::shared_ptr< BaseLevel > base_level()
Definition: Status.hpp:332
std::shared_ptr< LuckPointCost > luck_cost()
Definition: Status.hpp:276
std::shared_ptr< Bonuses::BonusUnbreakableShield > bonus_unbreakable_shield()
Definition: Status.hpp:1152
std::shared_ptr< CurrentWeight > current_weight()
Definition: Status.hpp:396
std::shared_ptr< Bonuses::BonusHPVanishPercent > bonus_hp_vanish_percent()
Definition: Status.hpp:1288
void set_bonus_critical_defense(std::shared_ptr< Bonuses::BonusCriticalDefense > b)
Definition: Status.hpp:905
std::shared_ptr< HairColor > _hair_color
Definition: Status.hpp:1838
std::shared_ptr< Bonuses::BonusSPDrainOnMonsterKill > bonus_sp_drain_on_monster_kill()
Definition: Status.hpp:1328
std::shared_ptr< Bonuses::BonusAddWeaponComaToElement > bonus_add_weapon_coma_to_element()
Definition: Status.hpp:1520
void set_next_job_experience(std::shared_ptr< NextJobExperience > njexp)
Definition: Status.hpp:373
std::shared_ptr< MaxSP > max_sp()
Definition: Status.hpp:308
void set_bonus_sp_percent(std::shared_ptr< Bonuses::BonusSPPercent > b)
Definition: Status.hpp:849
std::shared_ptr< Dexterity > dexterity()
Definition: Status.hpp:212
void set_bonus_sp_drain_value(std::shared_ptr< Bonuses::BonusSPDrainValue > b)
Definition: Status.hpp:1513
void set_bonus_damage_splash_range(std::shared_ptr< Bonuses::BonusDamageSplashRange > b)
Definition: Status.hpp:1177
std::shared_ptr< SPRegeneration > _sp_regeneration
Definition: Status.hpp:1835
std::shared_ptr< Bonuses::BonusDamageSplashRange > bonus_damage_splash_range()
Definition: Status.hpp:1176
std::shared_ptr< HeadTopSprite > _head_top_sprite
Definition: Status.hpp:1843
std::shared_ptr< RobeSprite > _robe_sprite
Definition: Status.hpp:1842
void set_bonus_restart_with_full_recovery(std::shared_ptr< Bonuses::BonusRestartWithFullRecovery > b)
Definition: Status.hpp:1065
void set_bonus_add_effect_on_damage(std::shared_ptr< Bonuses::BonusAddEffectOnDamage > b)
Definition: Status.hpp:1393
void set_size(std::shared_ptr< UnitSize > s)
Definition: Status.hpp:647
std::shared_ptr< Bonuses::BonusAttackRangePercent > bonus_attack_range_percent()
Definition: Status.hpp:864
std::shared_ptr< Bonuses::BonusAddEleMagicDamagePercent > bonus_add_ele_magic_damage_percent()
Definition: Status.hpp:1744
void set_base_attack(std::shared_ptr< BaseAttack > b)
Definition: Status.hpp:615
std::shared_ptr< Bonuses::BonusAutoSpellOnReceiveDamage > bonus_auto_spell_on_receive_damage()
Definition: Status.hpp:1768
std::shared_ptr< HairColor > hair_color()
Definition: Status.hpp:533
void set_bonus_attack_range(std::shared_ptr< Bonuses::BonusAttackRange > b)
Definition: Status.hpp:857
void set_bonus_hp_recovery_percent(std::shared_ptr< Bonuses::BonusHPRecoveryPercent > b)
Definition: Status.hpp:889
std::shared_ptr< BaseAppearance > _base_appearance
Definition: Status.hpp:1837
std::shared_ptr< Bonuses::BonusAddEffectOnMagicAttack > bonus_add_effect_on_magic_attack()
Definition: Status.hpp:1440
void set_intelligence_cost(std::shared_ptr< IntelligencePointCost > int_)
Definition: Status.hpp:269
void set_base_appearance(std::shared_ptr< BaseAppearance > ba)
Definition: Status.hpp:531
std::shared_ptr< HairStyle > hair_style()
Definition: Status.hpp:557
std::shared_ptr< AttackRange > _attack_range
Definition: Status.hpp:1820
void set_dexterity_cost(std::shared_ptr< DexterityPointCost > dex)
Definition: Status.hpp:261
std::shared_ptr< Bonuses::BonusHardMagicalDefensePercent > bonus_hard_magical_defense_percent()
Definition: Status.hpp:1056
std::shared_ptr< Bonuses::BonusUnbreakableWeapon > bonus_unbreakable_weapon()
Definition: Status.hpp:1128
std::shared_ptr< Bonuses::BonusAddMovementSpeedPercent > bonus_add_movement_speed_percent()
Definition: Status.hpp:872
std::shared_ptr< Honor > honor()
Definition: Status.hpp:571
std::shared_ptr< Bonuses::BonusArmorBreakPercent > bonus_armor_break_percent()
Definition: Status.hpp:1208
std::shared_ptr< MobElement > creature_element()
Definition: Status.hpp:719
void set_bonus_attack_on_defense_ratio_for_race(std::shared_ptr< Bonuses::BonusAttackOnDefenseRatioForRace > b)
Definition: Status.hpp:1001
std::shared_ptr< Bonuses::BonusSkillVariableCastPercent > bonus_skill_variable_cast_percent()
Definition: Status.hpp:1688
std::shared_ptr< Bonuses::BonusAutoSpellOnSelf > bonus_auto_spell_on_self()
Definition: Status.hpp:1776
void set_bonus_gemstone_immunity(std::shared_ptr< Bonuses::BonusGemstoneImmunity > b)
Definition: Status.hpp:1105
std::shared_ptr< MobElement > _creature_element
Definition: Status.hpp:1870
void set_base_experience(std::shared_ptr< BaseExperience > bexp)
Definition: Status.hpp:349
std::shared_ptr< Bonuses::BonusAddItemDropOnMonsterKill > bonus_add_item_drop_on_monster_kill()
Definition: Status.hpp:1312
~Status()
Definition: Status.cpp:253
std::shared_ptr< JobLevel > _job_level
Definition: Status.hpp:1812
std::shared_ptr< Bonuses::BonusAddEleWeaponDamagePercent > bonus_add_ele_weapon_damage_percent()
Definition: Status.hpp:1736
std::shared_ptr< MobElementLevel > _creature_element_level
Definition: Status.hpp:1871
std::shared_ptr< CurrentSP > _current_sp
Definition: Status.hpp:1810
void set_bonus_attack_on_defense_ratio_for_element(std::shared_ptr< Bonuses::BonusAttackOnDefenseRatioForElement > b)
Definition: Status.hpp:993
void set_bonus_attack_speed_percent(std::shared_ptr< Bonuses::BonusAttackSpeedPercent > b)
Definition: Status.hpp:881
void set_bonus_misc_defense_percent(std::shared_ptr< Bonuses::BonusMiscDefensePercent > b)
Definition: Status.hpp:961
std::shared_ptr< Bonuses::BonusAttackPercent > bonus_attack_percent()
Definition: Status.hpp:944
std::shared_ptr< SoftDEF > _soft_def
Definition: Status.hpp:1826
void set_bonus_sub_attack_percentage_from_race(std::shared_ptr< Bonuses::BonusSubAttackPercentageFromRace > b)
Definition: Status.hpp:1385
void set_shield_sprite(std::shared_ptr< ShieldSprite > ss)
Definition: Status.hpp:543
void set_bonus_reduce_sp_consumption_of_skill_by_percent(std::shared_ptr< Bonuses::BonusReduceSPConsumptionOfSkillByPercent > b)
Definition: Status.hpp:1625
std::shared_ptr< Bonuses::BonusHardDefensePercent > bonus_hard_defense_percent()
Definition: Status.hpp:1040
std::shared_ptr< Bonuses::BonusAddMagicalDefenseToClass > bonus_add_magical_defense_to_class()
Definition: Status.hpp:1480
void set_bonus_add_attack(std::shared_ptr< Bonuses::BonusAddAttack > b)
Definition: Status.hpp:1553
std::shared_ptr< CurrentWeight > _current_weight
Definition: Status.hpp:1819
void set_job_level(std::shared_ptr< JobLevel > jlvl)
Definition: Status.hpp:341
void set_bonus_critical_race_percent(std::shared_ptr< Bonuses::BonusCriticalRacePercent > b)
Definition: Status.hpp:1577
void set_max_weight(std::shared_ptr< MaxWeight > mw)
Definition: Status.hpp:389
void set_bonus_add_weapon_coma_to_race(std::shared_ptr< Bonuses::BonusAddWeaponComaToRace > b)
Definition: Status.hpp:1529
std::shared_ptr< Bonuses::BonusJobPercentPerRace > bonus_job_percent_per_race()
Definition: Status.hpp:1608
void set_bonus_add_effect_when_damaged(std::shared_ptr< Bonuses::BonusAddEffectWhenDamaged > b)
Definition: Status.hpp:1401
std::shared_ptr< HardDEF > _hard_def
Definition: Status.hpp:1827
std::shared_ptr< SkillPoint > _skill_point
Definition: Status.hpp:1806
void remove_appearance(std::shared_ptr< Appearance > appearance)
Definition: Status.hpp:765
void set_bonus_critical_percent(std::shared_ptr< Bonuses::BonusCriticalPercent > b)
Definition: Status.hpp:977
void set_bonus_flee_percent(std::shared_ptr< Bonuses::BonusFleePercent > b)
Definition: Status.hpp:1017
void set_hp_regeneration(std::shared_ptr< HPRegeneration > hpr)
Definition: Status.hpp:512
void set_bonus_ressist_effect(std::shared_ptr< Bonuses::BonusRessistEffect > b)
Definition: Status.hpp:1409
std::shared_ptr< AttackSpeed > attack_speed()
Definition: Status.hpp:503
std::shared_ptr< Bonuses::BonusMagicDefensePercent > bonus_magic_defense_percent()
Definition: Status.hpp:952
void set_bonus_all_status(std::shared_ptr< Bonuses::BonusAllStatus > b)
Definition: Status.hpp:801
std::shared_ptr< Bonuses::BonusExpPercentPerRace > bonus_exp_percent_per_race()
Definition: Status.hpp:1600
void remove_bonus(std::shared_ptr< Bonuses::IBonusArray > ba)
Definition: Status.hpp:1337
bool update(uint64_t delta)
Definition: Status.cpp:525
std::shared_ptr< WeaponSprite > weapon_sprite()
Definition: Status.hpp:539
std::shared_ptr< Bonuses::BonusReduceSPConsumptionOfSkillByPercent > bonus_reduce_sp_consumption_of_skill_by_percent()
Definition: Status.hpp:1624
bool increase_status_point(status_point_type type, uint16_t amount)
Increases a status point to a certain limit and returns the current total of the stat.
Definition: Status.cpp:869
void set_body_style(std::shared_ptr< BodyStyle > bs)
Definition: Status.hpp:561
void set_bonus_unbreakable_shield(std::shared_ptr< Bonuses::BonusUnbreakableShield > b)
Definition: Status.hpp:1153
void set_bonus_critical_race(std::shared_ptr< Bonuses::BonusCriticalRace > b)
Definition: Status.hpp:1569
std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToSize > bonus_add_magic_attack_percentage_to_size()
Definition: Status.hpp:1432
void set_soft_mdef(std::shared_ptr< SoftMDEF > smdef)
Definition: Status.hpp:464
void set_bonus_skill_fix_cast_percent(std::shared_ptr< Bonuses::BonusSkillFixCastPercent > b)
Definition: Status.hpp:1681
void set_attack_speed(std::shared_ptr< AttackSpeed > aspd)
Definition: Status.hpp:504
std::shared_ptr< Bonuses::BonusDisableSPRecovery > bonus_disable_sp_recovery()
Definition: Status.hpp:1240
void set_creature_primary_race(std::shared_ptr< MobPrimaryRace > m)
Definition: Status.hpp:704
std::shared_ptr< NextJobExperience > next_job_experience()
Definition: Status.hpp:372
std::shared_ptr< MobWeaponAttack > creature_weapon_attack_magic()
Definition: Status.hpp:663
Status(std::weak_ptr< Unit > unit, unit_type type)
Definition: Status.cpp:247
void set_bonus_reduce_sp_consumption_of_skill(std::shared_ptr< Bonuses::BonusReduceSPConsumptionOfSkill > b)
Definition: Status.hpp:1633
void set_bonus_add_ele_weapon_damage_percent(std::shared_ptr< Bonuses::BonusAddEleWeaponDamagePercent > b)
Definition: Status.hpp:1737
void set_hair_color(std::shared_ptr< HairColor > hc)
Definition: Status.hpp:534
std::shared_ptr< Bonuses::BonusShortWeaponDamagePercent > bonus_short_weapon_damage_percent()
Definition: Status.hpp:1256
void set_strength_cost(std::shared_ptr< StrengthPointCost > str)
Definition: Status.hpp:237
void set_bonus_gear_fuel_immunity(std::shared_ptr< Bonuses::BonusGearFuelImmunity > b)
Definition: Status.hpp:1113
void set_weapon_attack_right(std::shared_ptr< WeaponAttackRight > w)
Definition: Status.hpp:631
std::shared_ptr< HairStyle > _hair_style
Definition: Status.hpp:1846
void set_bonus_magic_damage_immunity(std::shared_ptr< Bonuses::BonusMagicDamageImmunity > b)
Definition: Status.hpp:1089
std::shared_ptr< EquipMATK > _equip_matk
Definition: Status.hpp:1825
void set_bonus_skill_attack(std::shared_ptr< Bonuses::BonusSkillAttack > b)
Definition: Status.hpp:1617
void set_bonus_cast_percent(std::shared_ptr< Bonuses::BonusCastPercent > b)
Definition: Status.hpp:825
std::shared_ptr< HeadTopSprite > head_top_sprite()
Definition: Status.hpp:548
void set_status_atk(std::shared_ptr< StatusATK > satk)
Definition: Status.hpp:416
std::shared_ptr< MobWeaponAttack > _creature_weapon_attack
Definition: Status.hpp:1862
std::vector< std::shared_ptr< Bonuses::IBonusArray > > _bonus_arrays
Definition: Status.hpp:1877
std::shared_ptr< JobExperience > job_experience()
Definition: Status.hpp:356
std::shared_ptr< Bonuses::BonusSPPercent > bonus_sp_percent()
Definition: Status.hpp:848
std::shared_ptr< Bonuses::BonusHitPercent > bonus_hit_percent()
Definition: Status.hpp:1008
void set_bonus_armor_break_percent(std::shared_ptr< Bonuses::BonusArmorBreakPercent > b)
Definition: Status.hpp:1209
void set_bonus_resist_magic_attack_from_race(std::shared_ptr< Bonuses::BonusResistMagicAttackFromRace > b)
Definition: Status.hpp:1449
bool load(std::shared_ptr< Horizon::Zone::Units::Player > pl)
Definition: Status.cpp:637
std::shared_ptr< Bonuses::IBonusArray > get_bonus_array(status_point_type type)
Definition: Status.hpp:1341
void set_soft_def(std::shared_ptr< SoftDEF > sdef)
Definition: Status.hpp:448
void set_bonus_exp_percent_per_race(std::shared_ptr< Bonuses::BonusExpPercentPerRace > b)
Definition: Status.hpp:1601
std::shared_ptr< Bonuses::BonusGemstoneImmunity > bonus_gemstone_immunity()
Definition: Status.hpp:1104
std::shared_ptr< Bonuses::BonusSoftMagicalDefensePercent > bonus_soft_magical_defense_percent()
Definition: Status.hpp:1048
std::shared_ptr< Bonuses::BonusAttackOnDefenseRatioForRace > bonus_attack_on_defense_ratio_for_race()
Definition: Status.hpp:1000
std::shared_ptr< MaxSP > _max_sp
Definition: Status.hpp:1808
std::shared_ptr< CurrentSP > current_sp()
Definition: Status.hpp:324
void set_bonus_melee_weapon_damage_reflect_percent_on_self(std::shared_ptr< Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf > b)
Definition: Status.hpp:1185
void set_hit(std::shared_ptr< HIT > hit)
Definition: Status.hpp:480
unit_type _type
Definition: Status.hpp:1786
std::shared_ptr< HeadMidSprite > _head_mid_sprite
Definition: Status.hpp:1844
std::shared_ptr< VitalityPointCost > vitality_cost()
Definition: Status.hpp:252
void set_bonus_soft_defense_percent(std::shared_ptr< Bonuses::BonusSoftDefensePercent > b)
Definition: Status.hpp:1033
void set_bonus_raise(std::shared_ptr< Bonuses::BonusRaise > b)
Definition: Status.hpp:1305
std::shared_ptr< Bonuses::BonusIgnoreDefenseFromElement > bonus_ignore_defense_from_element()
Definition: Status.hpp:1704
std::shared_ptr< Bonuses::BonusCastPercent > bonus_cast_percent()
Definition: Status.hpp:824
void set_head_mid_sprite(std::shared_ptr< HeadMidSprite > hms)
Definition: Status.hpp:552
std::shared_ptr< MobViewRange > _creature_view_range
Definition: Status.hpp:1866
std::shared_ptr< Bonuses::BonusAddAttackPercentageToSize > bonus_add_attack_percentage_to_size()
Definition: Status.hpp:1368
std::shared_ptr< Bonuses::BonusSoftDefensePercent > bonus_soft_defense_percent()
Definition: Status.hpp:1032
void add_bonus(std::shared_ptr< Bonuses::Bonus > bonus)
Definition: Status.hpp:784
void set_bonus_ignore_defense_from_race(std::shared_ptr< Bonuses::BonusIgnoreDefenseFromRace > b)
Definition: Status.hpp:1713
std::shared_ptr< Bonuses::BonusRaise > bonus_raise()
Definition: Status.hpp:1304
std::shared_ptr< Bonuses::BonusResistSkillDamagePercent > bonus_resist_skill_damage_percent()
Definition: Status.hpp:1696
void set_bonus_get_zeny_num(std::shared_ptr< Bonuses::BonusGetZenyNum > b)
Definition: Status.hpp:985
std::shared_ptr< ClothColor > _cloth_color
Definition: Status.hpp:1839
std::shared_ptr< MobMagicAttackDamage > _creature_magic_attack_damage
Definition: Status.hpp:1865
void set_status_matk(std::shared_ptr< StatusMATK > smatk)
Definition: Status.hpp:432
std::shared_ptr< Bonuses::BonusSPDrainPercent > bonus_sp_drain_percent()
Definition: Status.hpp:1504
void set_skill_point(std::shared_ptr< SkillPoint > sk)
Definition: Status.hpp:293
void set_bonus_disable_hp_recovery(std::shared_ptr< Bonuses::BonusDisableHPRecovery > b)
Definition: Status.hpp:1233
void set_bonus_add_movement_speed_percent(std::shared_ptr< Bonuses::BonusAddMovementSpeedPercent > b)
Definition: Status.hpp:873
void set_agility(std::shared_ptr< Agility > agi)
Definition: Status.hpp:197
void set_bonus_add_ele_magic_damage_percent(std::shared_ptr< Bonuses::BonusAddEleMagicDamagePercent > b)
Definition: Status.hpp:1745
std::shared_ptr< MobMode > _creature_mode
Definition: Status.hpp:1872
std::shared_ptr< Dexterity > _dex
Definition: Status.hpp:1797
std::shared_ptr< Bonuses::BonusCriticalRace > bonus_critical_race()
Definition: Status.hpp:1568
void set_sp_regeneration(std::shared_ptr< SPRegeneration > spr)
Definition: Status.hpp:520
std::shared_ptr< Bonuses::BonusAddAttackPercentageToRace > bonus_add_attack_percentage_to_race()
Definition: Status.hpp:1360
std::shared_ptr< Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf > bonus_melee_weapon_damage_reflect_percent_on_self()
Definition: Status.hpp:1184
std::shared_ptr< Bonuses::BonusAllStatus > bonus_all_status()
Definition: Status.hpp:800
void set_current_weight(std::shared_ptr< CurrentWeight > cw)
Definition: Status.hpp:397
std::shared_ptr< Bonuses::BonusCriticalPercent > bonus_critical_percent()
Definition: Status.hpp:976
std::shared_ptr< HIT > hit()
Definition: Status.hpp:479
void set_hard_def(std::shared_ptr< HardDEF > hdef)
Definition: Status.hpp:456
void set_bonus_sp_drain_on_monster_kill(std::shared_ptr< Bonuses::BonusSPDrainOnMonsterKill > b)
Definition: Status.hpp:1329
void set_bonus_hp_drain_on_monster_kill(std::shared_ptr< Bonuses::BonusHPDrainOnMonsterKill > b)
Definition: Status.hpp:1321
void set_bonus_attack_element(std::shared_ptr< Bonuses::BonusAttackElement > b)
Definition: Status.hpp:809
void set_agility_cost(std::shared_ptr< AgilityPointCost > agi)
Definition: Status.hpp:245
std::shared_ptr< HIT > _hit
Definition: Status.hpp:1830
std::shared_ptr< Bonuses::BonusAddAttackPercent > bonus_add_attack_percent()
Definition: Status.hpp:1560
std::shared_ptr< Bonuses::BonusItemUsageImmunity > bonus_item_usage_immunity()
Definition: Status.hpp:1272
void set_honor(std::shared_ptr< Honor > h)
Definition: Status.hpp:572
std::shared_ptr< Bonuses::BonusAddAttackPercentageToElement > bonus_add_attack_percentage_to_element()
Definition: Status.hpp:1352
void calculate(bool notify=true)
Definition: Status.cpp:501
void set_bonus_hp_drain_percent(std::shared_ptr< Bonuses::BonusHPDrainPercent > b)
Definition: Status.hpp:1489
std::shared_ptr< Bonuses::BonusKnockBackImmunity > bonus_knock_back_immunity()
Definition: Status.hpp:1280
void set_damage_walk_delay(std::shared_ptr< DamageWalkDelay > m)
Definition: Status.hpp:607
std::shared_ptr< CRIT > crit()
Definition: Status.hpp:487
void set_current_sp(std::shared_ptr< CurrentSP > sp)
Definition: Status.hpp:325
std::shared_ptr< FLEE > flee()
Definition: Status.hpp:495
void set_attack_delay(std::shared_ptr< AttackDelay > a)
Definition: Status.hpp:599
std::shared_ptr< IntelligencePointCost > intelligence_cost()
Definition: Status.hpp:268
void set_bonus_perfect_hit_percent(std::shared_ptr< Bonuses::BonusPerfectHitPercent > b)
Definition: Status.hpp:969
void set_crit(std::shared_ptr< CRIT > crit)
Definition: Status.hpp:488
void set_bonus_sp_recovery_percent(std::shared_ptr< Bonuses::BonusSPRecoveryPercent > b)
Definition: Status.hpp:897
std::shared_ptr< SPRegeneration > sp_regeneration()
Definition: Status.hpp:519
std::shared_ptr< Vitality > _vit
Definition: Status.hpp:1795
std::shared_ptr< DexterityPointCost > _dex_cost
Definition: Status.hpp:1803
std::shared_ptr< WeaponSprite > _weapon_sprite
Definition: Status.hpp:1840
std::shared_ptr< StatusMATK > _status_matk
Definition: Status.hpp:1824
std::shared_ptr< Intelligence > intelligence()
Definition: Status.hpp:220
std::shared_ptr< Luck > _luk
Definition: Status.hpp:1798
void set_bonus_long_weapon_damage_percent(std::shared_ptr< Bonuses::BonusLongWeaponDamagePercent > b)
Definition: Status.hpp:1265
bool _is_initialized
Definition: Status.hpp:1787
void set_cloth_color(std::shared_ptr< ClothColor > cc)
Definition: Status.hpp:537
std::shared_ptr< Bonuses::BonusAddWeaponComaToSubElement > bonus_add_weapon_coma_to_sub_element()
Definition: Status.hpp:1536
std::shared_ptr< UnitSize > size()
Definition: Status.hpp:646
std::shared_ptr< Luck > luck()
Definition: Status.hpp:228
std::shared_ptr< CurrentHP > current_hp()
Definition: Status.hpp:316
std::shared_ptr< Bonuses::BonusSPGainOnMobKill > bonus_sp_gain_on_mob_kill()
Definition: Status.hpp:1160
std::shared_ptr< Bonuses::BonusLearnedSkillHeal > bonus_learned_skill_heal()
Definition: Status.hpp:1640
std::shared_ptr< DexterityPointCost > dexterity_cost()
Definition: Status.hpp:260
void set_bonus_job_percent_per_race(std::shared_ptr< Bonuses::BonusJobPercentPerRace > b)
Definition: Status.hpp:1609
void set_bonus_add_weapon_coma_to_element(std::shared_ptr< Bonuses::BonusAddWeaponComaToElement > b)
Definition: Status.hpp:1521
std::shared_ptr< RobeSprite > robe_sprite()
Definition: Status.hpp:545
std::shared_ptr< Bonuses::BonusHPRecoveryPercent > bonus_hp_recovery_percent()
Definition: Status.hpp:888
std::shared_ptr< Bonuses::BonusSubAttackPercentageFromElement > bonus_sub_attack_percentage_from_element()
Definition: Status.hpp:1376
void set_flee(std::shared_ptr< FLEE > flee)
Definition: Status.hpp:496
std::shared_ptr< Bonuses::BonusSkillCastPercent > bonus_skill_cast_percent()
Definition: Status.hpp:1664
void set_head_top_sprite(std::shared_ptr< HeadTopSprite > hts)
Definition: Status.hpp:549
void set_creature_element(std::shared_ptr< MobElement > m)
Definition: Status.hpp:720
std::shared_ptr< Virtue > _virtue
Definition: Status.hpp:1852
std::shared_ptr< AttackSpeed > _aspd
Definition: Status.hpp:1833
std::shared_ptr< Bonuses::BonusIgnoreMagicDefenseFromRace > bonus_ignore_magic_defense_from_race()
Definition: Status.hpp:1728
std::shared_ptr< Bonuses::BonusSkillAttack > bonus_skill_attack()
Definition: Status.hpp:1616
void set_bonus_size_modifier_immunity(std::shared_ptr< Bonuses::BonusSizeModifierImmunity > b)
Definition: Status.hpp:1081
void set_bonus_add_weapon_coma_to_sub_element(std::shared_ptr< Bonuses::BonusAddWeaponComaToSubElement > b)
Definition: Status.hpp:1537
void set_bonus_ignore_defense_from_element(std::shared_ptr< Bonuses::BonusIgnoreDefenseFromElement > b)
Definition: Status.hpp:1705
std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToRace > bonus_add_magic_attack_to_Race()
Definition: Status.hpp:1424
std::shared_ptr< HPRegeneration > _hp_regeneration
Definition: Status.hpp:1834
std::shared_ptr< StatusRegistry > status_registry()
Definition: Status.hpp:743
std::shared_ptr< Bonuses::BonusDoubleAttackPercent > bonus_double_attack_percent()
Definition: Status.hpp:928
void set_bonus_add_magic_attack_percentage_to_size(std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToSize > b)
Definition: Status.hpp:1433
void set_bonus_sp_drain_percent(std::shared_ptr< Bonuses::BonusSPDrainPercent > b)
Definition: Status.hpp:1505
void set_bonus_infinite_endure(std::shared_ptr< Bonuses::BonusInfiniteEndure > b)
Definition: Status.hpp:1121
std::shared_ptr< Bonuses::BonusSkillKnockback > bonus_skill_knockback()
Definition: Status.hpp:1656
std::shared_ptr< HeadBottomSprite > _head_bottom_sprite
Definition: Status.hpp:1845
std::shared_ptr< Bonuses::BonusRestartWithFullRecovery > bonus_restart_with_full_recovery()
Definition: Status.hpp:1064
void set_bonus_add_magic_attack_percentage_to_race(std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToRace > b)
Definition: Status.hpp:1425
void set_equip_matk(std::shared_ptr< EquipMATK > ematk)
Definition: Status.hpp:440
void set_robe_sprite(std::shared_ptr< RobeSprite > rs)
Definition: Status.hpp:546
std::shared_ptr< BaseExperience > base_experience()
Definition: Status.hpp:348
void set_manner(std::shared_ptr< Manner > m)
Definition: Status.hpp:580
std::shared_ptr< Bonuses::BonusLongWeaponDamagePercent > bonus_long_weapon_damage_percent()
Definition: Status.hpp:1264
void set_movement_speed(std::shared_ptr< MovementSpeed > speed)
Definition: Status.hpp:381
void set_bonus_perfect_dodge_percent(std::shared_ptr< Bonuses::BonusPerfectDodgePercent > b)
Definition: Status.hpp:1025
void set_bonus_attack_percent(std::shared_ptr< Bonuses::BonusAttackPercent > b)
Definition: Status.hpp:945
void set_weapon_attack_left(std::shared_ptr< WeaponAttackLeft > w)
Definition: Status.hpp:623
void set_creature_weapon_attack_magic(std::shared_ptr< MobWeaponAttack > m)
Definition: Status.hpp:664
std::shared_ptr< bonuses > _bonus
Definition: Status.hpp:2006
std::shared_ptr< StatusATK > status_atk()
SubAttributes.
Definition: Status.hpp:415
std::shared_ptr< ShieldSprite > _shield_sprite
Definition: Status.hpp:1841
std::shared_ptr< NextBaseExperience > _next_base_exp
Definition: Status.hpp:1815
std::shared_ptr< MobPrimaryRace > creature_primary_race()
Definition: Status.hpp:703
std::shared_ptr< AttackDelay > _attack_delay
Definition: Status.hpp:1854
std::shared_ptr< Bonuses::BonusWeaponDamageImmunity > bonus_weapon_damage_immunity()
Definition: Status.hpp:1096
std::shared_ptr< Manner > _manner
Definition: Status.hpp:1851
void set_bonus_cast_cancel_immunity(std::shared_ptr< Bonuses::BonusCastCancelImmunity > b)
Definition: Status.hpp:1073
void set_bonus_hp_drain_value(std::shared_ptr< Bonuses::BonusHPDrainValue > b)
Definition: Status.hpp:1497
void set_bonus_auto_spell_on_attack(std::shared_ptr< Bonuses::BonusAutoSpellOnAttack > b)
Definition: Status.hpp:1761
std::shared_ptr< SkillPoint > skill_point()
Definition: Status.hpp:292
std::shared_ptr< MobPrimaryRace > _creature_primary_race
Definition: Status.hpp:1868
std::shared_ptr< ClothColor > cloth_color()
Definition: Status.hpp:536
void set_bonus_add_weapon_coma_to_sub_race(std::shared_ptr< Bonuses::BonusAddWeaponComaToSubRace > b)
Definition: Status.hpp:1545
std::shared_ptr< Bonuses::BonusIgnoreMagicDefenseFromElement > bonus_ignore_magic_defense_from_element()
Definition: Status.hpp:1720
std::shared_ptr< MobWeaponAttack > _creature_weapon_attack_magic
Definition: Status.hpp:1863
void set_max_sp(std::shared_ptr< MaxSP > max_sp)
Definition: Status.hpp:309
std::shared_ptr< MobViewRange > creature_view_range()
Definition: Status.hpp:687
std::shared_ptr< Bonuses::BonusWeaponBreakPercent > bonus_weapon_break_percent()
Definition: Status.hpp:1200
std::shared_ptr< AttackRange > attack_range()
Definition: Status.hpp:404
bool is_initialized()
Definition: Status.hpp:745
std::shared_ptr< Bonuses::BonusAttackElement > bonus_attack_element()
Definition: Status.hpp:808
std::shared_ptr< Strength > _str
Definition: Status.hpp:1793
std::shared_ptr< Intelligence > _int
Definition: Status.hpp:1796
void set_bonus_short_weapon_damage_percent(std::shared_ptr< Bonuses::BonusShortWeaponDamagePercent > b)
Definition: Status.hpp:1257
std::shared_ptr< MobMagicAttackDamage > creature_magic_attack_damage()
Definition: Status.hpp:679
void set_bonus_add_steal_percent(std::shared_ptr< Bonuses::BonusAddStealPercent > b)
Definition: Status.hpp:1217
std::shared_ptr< Bonuses::BonusDisableHPRecovery > bonus_disable_hp_recovery()
Definition: Status.hpp:1232
void set_bonus_heal_of_skill_casted_on_self(std::shared_ptr< Bonuses::BonusHealOfSkillCastedOnSelf > b)
Definition: Status.hpp:1649
void set_luck_cost(std::shared_ptr< LuckPointCost > luck)
Definition: Status.hpp:277
void set_bonus_ignore_magic_defense_from_race(std::shared_ptr< Bonuses::BonusIgnoreMagicDefenseFromRace > b)
Definition: Status.hpp:1729
void set_bonus_magic_attack_percent(std::shared_ptr< Bonuses::BonusMagicAttackPercent > b)
Definition: Status.hpp:937
std::shared_ptr< Bonuses::BonusSPDrainValue > bonus_sp_drain_value()
Definition: Status.hpp:1512
void set_bonus_ranged_weapon_damage_reflect_percent_on_self(std::shared_ptr< Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf > b)
Definition: Status.hpp:1193
void set_bonus_auto_spell_on_self(std::shared_ptr< Bonuses::BonusAutoSpellOnSelf > b)
Definition: Status.hpp:1777
std::vector< std::shared_ptr< Appearance > > _appearances
Definition: Status.hpp:1875
std::shared_ptr< Agility > agility()
Definition: Status.hpp:196
std::shared_ptr< Bonuses::BonusAddWeaponComaToSubRace > bonus_add_weapon_coma_to_sub_race()
Definition: Status.hpp:1544
void set_bonus_melee_defense(std::shared_ptr< Bonuses::BonusMeleeDefense > b)
Definition: Status.hpp:913
std::shared_ptr< AgilityPointCost > _agi_cost
Definition: Status.hpp:1800
std::shared_ptr< MobMode > creature_mode()
Definition: Status.hpp:735
void set_bonus_add_attack_percent(std::shared_ptr< Bonuses::BonusAddAttackPercent > b)
Definition: Status.hpp:1561
void set_bonus_double_attack_percent(std::shared_ptr< Bonuses::BonusDoubleAttackPercent > b)
Definition: Status.hpp:929
std::shared_ptr< DamageWalkDelay > damage_walk_delay()
Definition: Status.hpp:606
std::shared_ptr< MaxHP > _max_hp
Definition: Status.hpp:1807
void set_bonus_critical_damage_percent(std::shared_ptr< Bonuses::BonusCriticalDamagePercent > b)
Definition: Status.hpp:1225
std::vector< std::shared_ptr< Attribute > > _attributes
Definition: Status.hpp:1874
void set_bonus_auto_spell_on_skill(std::shared_ptr< Bonuses::BonusAutoSpellOnSkill > b)
Definition: Status.hpp:1753
bool initialize(std::shared_ptr< Horizon::Zone::Units::Mob > creature, std::shared_ptr< const monster_config_data > md)
Definition: Status.cpp:546
std::shared_ptr< HeadBottomSprite > head_bottom_sprite()
Definition: Status.hpp:554
void set_bonus_skill_variable_cast_percent(std::shared_ptr< Bonuses::BonusSkillVariableCastPercent > b)
Definition: Status.hpp:1689
std::shared_ptr< Strength > strength()
Attributes.
Definition: Status.hpp:188
std::shared_ptr< LuckPointCost > _luk_cost
Definition: Status.hpp:1804
std::shared_ptr< Bonuses::BonusRessistEffect > bonus_ressist_effect()
Definition: Status.hpp:1408
void set_creature_attack_damage(std::shared_ptr< MobAttackDamage > m)
Definition: Status.hpp:672
void set_weapon_attack_combined(std::shared_ptr< WeaponAttackCombined > w)
Definition: Status.hpp:639
void set_base_level(std::shared_ptr< BaseLevel > blvl)
Definition: Status.hpp:333
std::shared_ptr< MobElementLevel > creature_element_level()
Definition: Status.hpp:727
std::shared_ptr< Bonuses::BonusGearFuelImmunity > bonus_gear_fuel_immunity()
Definition: Status.hpp:1112
std::shared_ptr< BaseAttack > base_attack()
Definition: Status.hpp:614
void set_weapon_sprite(std::shared_ptr< WeaponSprite > ws)
Definition: Status.hpp:540
void set_head_bottom_sprite(std::shared_ptr< HeadBottomSprite > hbs)
Definition: Status.hpp:555
void set_bonus_add_attack_percentage_to_size(std::shared_ptr< Bonuses::BonusAddAttackPercentageToSize > b)
Definition: Status.hpp:1369
std::shared_ptr< HardDEF > hard_def()
Definition: Status.hpp:455
void set_zeny(std::shared_ptr< Zeny > z)
Definition: Status.hpp:564
std::shared_ptr< SoftMDEF > _soft_mdef
Definition: Status.hpp:1828
std::shared_ptr< MobWeaponAttack > creature_weapon_attack()
Definition: Status.hpp:655
std::shared_ptr< Bonuses::BonusCriticalDefense > bonus_critical_defense()
Definition: Status.hpp:904
std::shared_ptr< CRIT > _crit
Definition: Status.hpp:1831
std::shared_ptr< Bonuses::BonusResistMagicAttackFromRace > bonus_resist_magic_attack_from_race()
Definition: Status.hpp:1448
std::shared_ptr< Bonuses::BonusAttackOnDefenseRatioForElement > bonus_attack_on_defense_ratio_for_element()
Definition: Status.hpp:992
std::shared_ptr< Bonuses::BonusDefenseElement > bonus_defense_element()
Definition: Status.hpp:816
std::shared_ptr< Attribute > get_attribute(status_point_type type)
Definition: Status.hpp:753
void set_bonus_add_attack_percentage_to_race(std::shared_ptr< Bonuses::BonusAddAttackPercentageToRace > b)
Definition: Status.hpp:1361
std::shared_ptr< Bonuses::BonusAutoSpellOnSkill > bonus_auto_spell_on_skill()
Definition: Status.hpp:1752
void set_max_hp(std::shared_ptr< MaxHP > max_hp)
Definition: Status.hpp:301
std::shared_ptr< Bonuses::BonusHPDrainValue > bonus_hp_drain_value()
Definition: Status.hpp:1496
std::shared_ptr< WeaponAttackRight > _weapon_attack_right
Definition: Status.hpp:1858
void set_bonus_auto_spell_on_receive_damage(std::shared_ptr< Bonuses::BonusAutoSpellOnReceiveDamage > b)
Definition: Status.hpp:1769
void set_bonus_unbreakable_weapon(std::shared_ptr< Bonuses::BonusUnbreakableWeapon > b)
Definition: Status.hpp:1129
std::shared_ptr< Bonuses::BonusFleePercent > bonus_flee_percent()
Definition: Status.hpp:1016
std::shared_ptr< NextBaseExperience > next_base_experience()
Definition: Status.hpp:364
void set_bonus_add_magical_defense_to_class(std::shared_ptr< Bonuses::BonusAddMagicalDefenseToClass > b)
Definition: Status.hpp:1481
std::shared_ptr< Manner > manner()
Definition: Status.hpp:579
std::shared_ptr< Bonuses::BonusPerfectDodgePercent > bonus_perfect_dodge_percent()
Definition: Status.hpp:1024
void set_bonus_magic_damage_reduction_against_size(std::shared_ptr< Bonuses::BonusMagicDamageReductionAgainstSize > b)
Definition: Status.hpp:1593
void add_appearance(std::shared_ptr< Appearance > appearance)
Definition: Status.hpp:764
void set_bonus_hard_magical_defense_percent(std::shared_ptr< Bonuses::BonusHardMagicalDefensePercent > b)
Definition: Status.hpp:1057
std::shared_ptr< Bonuses::BonusReduceSPConsumptionOfSkill > bonus_reduce_sp_consumption_of_skill()
Definition: Status.hpp:1632
void set_bonus_hp_vanish_percent(std::shared_ptr< Bonuses::BonusHPVanishPercent > b)
Definition: Status.hpp:1289
std::shared_ptr< Bonuses::BonusSPRecoveryPercent > bonus_sp_recovery_percent()
Definition: Status.hpp:896
std::shared_ptr< DamageWalkDelay > _damage_walk_delay
Definition: Status.hpp:1855
std::shared_ptr< SoftMDEF > soft_mdef()
Definition: Status.hpp:463
void add_attribute(std::shared_ptr< Attribute > attribute)
Definition: Status.hpp:748
void set_bonus_max_sp_percent(std::shared_ptr< Bonuses::BonusMaxSPPercent > b)
Definition: Status.hpp:841
void set_virtue(std::shared_ptr< Virtue > v)
Definition: Status.hpp:588
std::shared_ptr< UnitSize > _size
Definition: Status.hpp:1860
void set_vitality_cost(std::shared_ptr< VitalityPointCost > vit)
Definition: Status.hpp:253
void set_bonus_magic_defense_percent(std::shared_ptr< Bonuses::BonusMagicDefensePercent > b)
Definition: Status.hpp:953
std::shared_ptr< MobAttackDamage > creature_attack_damage()
Definition: Status.hpp:671
void set_creature_secondary_race(std::shared_ptr< MobSecondaryRace > m)
Definition: Status.hpp:712
std::shared_ptr< Appearance > get_appearance(unit_appearance_type type)
Definition: Status.hpp:769
void set_initialized(bool b)
Definition: Status.hpp:746
void set_bonus_skill_cooldown(std::shared_ptr< Bonuses::BonusSkillCooldown > b)
Definition: Status.hpp:1673
std::shared_ptr< Bonuses::BonusMaxHPPercent > bonus_max_hp_percent()
Definition: Status.hpp:832
void set_bonus_unbreakable_armor(std::shared_ptr< Bonuses::BonusUnbreakableArmor > b)
Definition: Status.hpp:1137
std::shared_ptr< Honor > _honor
Definition: Status.hpp:1850
std::shared_ptr< Bonuses::BonusMeleeDefense > bonus_melee_defense()
Definition: Status.hpp:912
void set_bonus_ranged_defense(std::shared_ptr< Bonuses::BonusRangedDefense > b)
Definition: Status.hpp:921
std::shared_ptr< EquipATK > _equip_atk
Definition: Status.hpp:1823
std::shared_ptr< Agility > _agi
Definition: Status.hpp:1794
void set_bonus_defense_element(std::shared_ptr< Bonuses::BonusDefenseElement > b)
Definition: Status.hpp:817
void set_current_hp(std::shared_ptr< CurrentHP > hp)
Definition: Status.hpp:317
void set_dexterity(std::shared_ptr< Dexterity > dex)
Definition: Status.hpp:213
std::shared_ptr< Bonuses::BonusAutoSpellOnAttack > bonus_auto_spell_on_attack()
Definition: Status.hpp:1760
std::shared_ptr< StrengthPointCost > _str_cost
Definition: Status.hpp:1799
std::shared_ptr< MovementSpeed > movement_speed()
Definition: Status.hpp:380
std::shared_ptr< Bonuses::BonusAddDefenseToClass > bonus_add_defense_to_class()
Definition: Status.hpp:1472
std::shared_ptr< StrengthPointCost > strength_cost()
Definition: Status.hpp:236
std::shared_ptr< StatusPoint > status_point()
Definition: Status.hpp:284
void set_bonus_sub_attack_percentage_from_element(std::shared_ptr< Bonuses::BonusSubAttackPercentageFromElement > b)
Definition: Status.hpp:1377
std::shared_ptr< BaseAttack > _base_attack
Definition: Status.hpp:1856
bool recalculate(bool notify=true)
Definition: Status.cpp:509
void set_hard_mdef(std::shared_ptr< HardMDEF > hmdef)
Definition: Status.hpp:472
std::shared_ptr< MobChaseRange > creature_chase_range()
Definition: Status.hpp:695
std::shared_ptr< ShieldSprite > shield_sprite()
Definition: Status.hpp:542
std::shared_ptr< Bonuses::BonusSizeModifierImmunity > bonus_size_modifier_immunity()
Definition: Status.hpp:1080
std::shared_ptr< Zeny > _zeny
Definition: Status.hpp:1849
std::shared_ptr< MobAttackDamage > _creature_attack_damage
Definition: Status.hpp:1864
std::shared_ptr< Bonuses::BonusHPDrainPercent > bonus_hp_drain_percent()
Definition: Status.hpp:1488
void set_creature_magic_attack_damage(std::shared_ptr< MobMagicAttackDamage > m)
Definition: Status.hpp:680
std::shared_ptr< BaseExperience > _base_exp
Definition: Status.hpp:1813
std::shared_ptr< VitalityPointCost > _vit_cost
Definition: Status.hpp:1801
std::shared_ptr< Bonuses::BonusMagicDamageReflectPercentOnSelf > bonus_magic_damage_reflect_percent_on_self()
Definition: Status.hpp:1248
void set_creature_view_range(std::shared_ptr< MobViewRange > m)
Definition: Status.hpp:688
std::shared_ptr< Bonuses::BonusGetZenyNum > bonus_get_zeny_num()
Definition: Status.hpp:984
std::shared_ptr< Bonuses::BonusAttackSpeedPercent > bonus_attack_speed_percent()
Definition: Status.hpp:880
std::shared_ptr< BaseLevel > _base_level
Definition: Status.hpp:1811
void set_hair_style(std::shared_ptr< HairStyle > hs)
Definition: Status.hpp:558
void set_bonus_sp_vanish_percent(std::shared_ptr< Bonuses::BonusSPVanishPercent > b)
Definition: Status.hpp:1297
void set_bonus_soft_magical_defense_percent(std::shared_ptr< Bonuses::BonusSoftMagicalDefensePercent > b)
Definition: Status.hpp:1049
std::shared_ptr< Bonuses::BonusCriticalRacePercent > bonus_critical_race_percent()
Definition: Status.hpp:1576
std::shared_ptr< WeaponAttackCombined > _weapon_attack_combined
Definition: Status.hpp:1859
std::shared_ptr< Bonuses::BonusUnbreakableArmor > bonus_unbreakable_armor()
Definition: Status.hpp:1136
void set_bonus_add_item_drop_on_monster_kill(std::shared_ptr< Bonuses::BonusAddItemDropOnMonsterKill > b)
Definition: Status.hpp:1313
std::shared_ptr< Bonuses::BonusSkillCooldown > bonus_skill_cooldown()
Definition: Status.hpp:1672
void set_bonus_add_magic_attack_percentage_to_element(std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToElement > b)
Definition: Status.hpp:1417
uint32_t get_status_base(status_point_type type)
Definition: Status.cpp:845
void set_creature_mode(std::shared_ptr< MobMode > m)
Definition: Status.hpp:736
void set_bonus_damage_reduction_against_size(std::shared_ptr< Bonuses::BonusDamageReductionAgainstSize > b)
Definition: Status.hpp:1585
std::shared_ptr< StatusRegistry > _status_registry
Definition: Status.hpp:1790
std::shared_ptr< MovementSpeed > _movement_speed
Definition: Status.hpp:1817
std::shared_ptr< CurrentHP > _current_hp
Definition: Status.hpp:1809
std::shared_ptr< Bonuses::BonusIgnoreDefenseFromRace > bonus_ignore_defense_from_race()
Definition: Status.hpp:1712
std::shared_ptr< Bonuses::BonusAddAttack > bonus_add_attack()
Definition: Status.hpp:1552
std::shared_ptr< EquipATK > equip_atk()
Definition: Status.hpp:423
void set_creature_weapon_attack(std::shared_ptr< MobWeaponAttack > m)
Definition: Status.hpp:656
std::shared_ptr< HPRegeneration > hp_regeneration()
Definition: Status.hpp:511
void set_strength(std::shared_ptr< Strength > str)
Definition: Status.hpp:189
std::shared_ptr< Unit > unit()
Definition: Status.hpp:1785
std::shared_ptr< Bonuses::BonusAddMagicDamageToClass > bonus_add_magic_damage_to_class()
Definition: Status.hpp:1464
void set_creature_chase_range(std::shared_ptr< MobChaseRange > m)
Definition: Status.hpp:696
void set_bonus_weapon_damage_immunity(std::shared_ptr< Bonuses::BonusWeaponDamageImmunity > b)
Definition: Status.hpp:1097
std::shared_ptr< Bonuses::BonusUnbreakableHelm > bonus_unbreakable_helm()
Definition: Status.hpp:1144
std::weak_ptr< Unit > _unit
Definition: Status.hpp:1791
void set_bonus_attack_range_percent(std::shared_ptr< Bonuses::BonusAttackRangePercent > b)
Definition: Status.hpp:865
std::shared_ptr< MobChaseRange > _creature_chase_range
Definition: Status.hpp:1867
std::shared_ptr< Bonuses::Bonus > get_bonus(status_point_type type)
Definition: Status.hpp:789
std::shared_ptr< EquipMATK > equip_matk()
Definition: Status.hpp:439
std::shared_ptr< SoftDEF > soft_def()
Definition: Status.hpp:447
void set_bonus_magic_damage_reflect_percent_on_self(std::shared_ptr< Bonuses::BonusMagicDamageReflectPercentOnSelf > b)
Definition: Status.hpp:1249
std::shared_ptr< Bonuses::BonusCastCancelImmunity > bonus_cast_cancel_immunity()
Definition: Status.hpp:1072
void set_bonus_add_magic_damage_to_class(std::shared_ptr< Bonuses::BonusAddMagicDamageToClass > b)
Definition: Status.hpp:1465
void set_bonus_hard_defense_percent(std::shared_ptr< Bonuses::BonusHardDefensePercent > b)
Definition: Status.hpp:1041
std::vector< std::shared_ptr< Bonuses::Bonus > > _bonuses
Definition: Status.hpp:1876
std::shared_ptr< Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf > bonus_ranged_weapon_damage_reflect_percent_on_self()
Definition: Status.hpp:1192
std::shared_ptr< Bonuses::BonusAddEffectOnDamage > bonus_add_effect_on_damage()
Definition: Status.hpp:1392
void set_bonus_max_hp_percent(std::shared_ptr< Bonuses::BonusMaxHPPercent > b)
Definition: Status.hpp:833
std::shared_ptr< HeadMidSprite > head_mid_sprite()
Definition: Status.hpp:551
void set_bonus_skill_knockback(std::shared_ptr< Bonuses::BonusSkillKnockback > b)
Definition: Status.hpp:1657
std::shared_ptr< Bonuses::BonusMagicDamageImmunity > bonus_magic_damage_immunity()
Definition: Status.hpp:1088
void set_bonus_weapon_break_percent(std::shared_ptr< Bonuses::BonusWeaponBreakPercent > b)
Definition: Status.hpp:1201
std::shared_ptr< Bonuses::BonusCriticalDamagePercent > bonus_critical_damage_percent()
Definition: Status.hpp:1224
std::shared_ptr< Zeny > zeny()
Definition: Status.hpp:563
bool save(std::shared_ptr< Horizon::Zone::Units::Player > pl)
Definition: Status.cpp:753
std::shared_ptr< Bonuses::BonusMagicDamageReductionAgainstSize > bonus_magic_damage_reduction_against_size()
Definition: Status.hpp:1592
void set_intelligence(std::shared_ptr< Intelligence > int_)
Definition: Status.hpp:221
std::shared_ptr< WeaponAttackLeft > _weapon_attack_left
Definition: Status.hpp:1857
std::shared_ptr< Bonuses::BonusMaxSPPercent > bonus_max_sp_percent()
Definition: Status.hpp:840
void on_job_changed(uint32_t job_id)
Definition: Status.cpp:823
void set_bonus_skill_cast_percent(std::shared_ptr< Bonuses::BonusSkillCastPercent > b)
Definition: Status.hpp:1665
void set_bonus_knock_back_immunity(std::shared_ptr< Bonuses::BonusKnockBackImmunity > b)
Definition: Status.hpp:1281
std::shared_ptr< MobSecondaryRace > _creature_secondary_race
Definition: Status.hpp:1869
std::shared_ptr< Bonuses::BonusPerfectHitPercent > bonus_perfect_hit_percent()
Definition: Status.hpp:968
std::shared_ptr< HardMDEF > hard_mdef()
Definition: Status.hpp:471
void set_equip_atk(std::shared_ptr< EquipATK > eatk)
Definition: Status.hpp:424
std::shared_ptr< Bonuses::BonusDamageReductionAgainstSize > bonus_damage_reduction_against_size()
Definition: Status.hpp:1584
std::shared_ptr< BaseAppearance > base_appearance()
Appearance.
Definition: Status.hpp:530
std::shared_ptr< AgilityPointCost > agility_cost()
Definition: Status.hpp:244
std::shared_ptr< StatusMATK > status_matk()
Definition: Status.hpp:431
std::shared_ptr< Bonuses::BonusAttackRange > bonus_attack_range()
Definition: Status.hpp:856
std::shared_ptr< Bonuses::BonusSPVanishPercent > bonus_sp_vanish_percent()
Definition: Status.hpp:1296
std::shared_ptr< MaxWeight > _max_weight
Definition: Status.hpp:1818
void set_bonus_add_effect_on_magic_attack(std::shared_ptr< Bonuses::BonusAddEffectOnMagicAttack > b)
Definition: Status.hpp:1441
std::shared_ptr< Bonuses::BonusAddEffectWhenDamaged > bonus_add_effect_when_damaged()
Definition: Status.hpp:1400
std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToElement > bonus_add_magic_attack_percentage_to_element()
Definition: Status.hpp:1416
std::shared_ptr< Bonuses::BonusAddDamageToClass > bonus_add_damage_to_class()
Definition: Status.hpp:1456
std::shared_ptr< AttackDelay > attack_delay()
Combat Status.
Definition: Status.hpp:598
void set_attack_range(std::shared_ptr< AttackRange > m)
Definition: Status.hpp:405
std::shared_ptr< IntelligencePointCost > _int_cost
Definition: Status.hpp:1802
void set_status_point(std::shared_ptr< StatusPoint > st)
Definition: Status.hpp:285
std::shared_ptr< Bonuses::BonusSubAttackPercentageFromRace > bonus_sub_attack_percentage_from_race()
Definition: Status.hpp:1384
void set_vitality(std::shared_ptr< Vitality > vit)
Definition: Status.hpp:205
std::shared_ptr< Bonuses::BonusAddStealPercent > bonus_add_steal_percent()
Definition: Status.hpp:1216
void set_bonus_hp_gain_on_mob_kill(std::shared_ptr< Bonuses::BonusHPGainOnMobKill > b)
Definition: Status.hpp:1169
std::shared_ptr< Bonuses::BonusHPGainOnMobKill > bonus_hp_gain_on_mob_kill()
Definition: Status.hpp:1168
std::shared_ptr< JobLevel > job_level()
Definition: Status.hpp:340
std::shared_ptr< Vitality > vitality()
Definition: Status.hpp:204
std::shared_ptr< HardMDEF > _hard_mdef
Definition: Status.hpp:1829
void remove_bonus(std::shared_ptr< Bonuses::Bonus > bonus)
Definition: Status.hpp:785
void set_bonus_disable_sp_recovery(std::shared_ptr< Bonuses::BonusDisableSPRecovery > b)
Definition: Status.hpp:1241
void set_bonus_add_defense_to_class(std::shared_ptr< Bonuses::BonusAddDefenseToClass > b)
Definition: Status.hpp:1473
void set_creature_element_level(std::shared_ptr< MobElementLevel > m)
Definition: Status.hpp:728
void set_bonus_hit_percent(std::shared_ptr< Bonuses::BonusHitPercent > b)
Definition: Status.hpp:1009
void on_equipment_changed(bool equipped, std::shared_ptr< const item_entry_data > item)
Definition: Status.cpp:788
std::shared_ptr< BodyStyle > _body_style
Definition: Status.hpp:1847
std::shared_ptr< Bonuses::BonusInfiniteEndure > bonus_infinite_endure()
Definition: Status.hpp:1120
std::shared_ptr< Bonuses::BonusHealOfSkillCastedOnSelf > bonus_heal_of_skill_casted_on_self()
Definition: Status.hpp:1648
std::shared_ptr< NextJobExperience > _next_job_exp
Definition: Status.hpp:1816
void set_bonus_sp_gain_on_mob_kill(std::shared_ptr< Bonuses::BonusSPGainOnMobKill > b)
Definition: Status.hpp:1161
void set_bonus_learned_skill_heal(std::shared_ptr< Bonuses::BonusLearnedSkillHeal > b)
Definition: Status.hpp:1641
void set_bonus_unbreakable_helm(std::shared_ptr< Bonuses::BonusUnbreakableHelm > b)
Definition: Status.hpp:1145
std::shared_ptr< FLEE > _flee
Definition: Status.hpp:1832
void set_bonus_resist_skill_damage_percent(std::shared_ptr< Bonuses::BonusResistSkillDamagePercent > b)
Definition: Status.hpp:1697
std::shared_ptr< Bonuses::BonusSkillFixCastPercent > bonus_skill_fix_cast_percent()
Definition: Status.hpp:1680
std::shared_ptr< Bonuses::BonusAddWeaponComaToRace > bonus_add_weapon_coma_to_race()
Definition: Status.hpp:1528
std::shared_ptr< StatusATK > _status_atk
Definition: Status.hpp:1822
void set_bonus_ignore_magic_defense_from_element(std::shared_ptr< Bonuses::BonusIgnoreMagicDefenseFromElement > b)
Definition: Status.hpp:1721
std::shared_ptr< Virtue > virtue()
Definition: Status.hpp:587
std::shared_ptr< Bonuses::BonusMagicAttackPercent > bonus_magic_attack_percent()
Definition: Status.hpp:936
std::shared_ptr< StatusPoint > _status_point
Definition: Status.hpp:1805
void add_bonus(std::shared_ptr< Bonuses::IBonusArray > ba)
Definition: Status.hpp:1336
void set_bonus_item_usage_immunity(std::shared_ptr< Bonuses::BonusItemUsageImmunity > b)
Definition: Status.hpp:1273
void set_next_base_experience(std::shared_ptr< NextBaseExperience > nbexp)
Definition: Status.hpp:365
void set_luck(std::shared_ptr< Luck > luck)
Definition: Status.hpp:229
void set_bonus_add_attack_percentage_to_element(std::shared_ptr< Bonuses::BonusAddAttackPercentageToElement > b)
Definition: Status.hpp:1353
void set_bonus_add_damage_to_class(std::shared_ptr< Bonuses::BonusAddDamageToClass > b)
Definition: Status.hpp:1457
void remove_attribute(std::shared_ptr< Attribute > attribute)
Definition: Status.hpp:749
std::shared_ptr< Bonuses::BonusHPDrainOnMonsterKill > bonus_hp_drain_on_monster_kill()
Definition: Status.hpp:1320
std::shared_ptr< Bonuses::BonusMiscDefensePercent > bonus_misc_defense_percent()
Definition: Status.hpp:960
std::shared_ptr< BodyStyle > body_style()
Definition: Status.hpp:560
uint32_t get_required_statpoints(uint16_t from, uint16_t to)
Definition: Status.cpp:835
std::shared_ptr< MaxHP > max_hp()
Definition: Status.hpp:300
Definition: ReferenceListTest.cpp:114
Definition: Element.hpp:7
bool operator()(StatusOperation *op1, StatusOperation *op2)
Definition: Status.hpp:134
Definition: Status.hpp:1879
std::shared_ptr< Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf > _melee_weapon_damage_reflect_percent_on_self
Definition: Status.hpp:1929
std::shared_ptr< Bonuses::BonusRangedDefense > _ranged_defense
Definition: Status.hpp:1896
std::shared_ptr< Bonuses::BonusMeleeDefense > _melee_defense
Definition: Status.hpp:1895
std::shared_ptr< Bonuses::BonusAttackRangePercent > _attack_range_percent
Definition: Status.hpp:1889
std::shared_ptr< Bonuses::BonusGetZenyNum > _get_zeny_num
Definition: Status.hpp:1904
std::shared_ptr< Bonuses::BonusHPRecoveryPercent > _hp_recovery_percent
Definition: Status.hpp:1892
std::shared_ptr< Bonuses::BonusMagicDefensePercent > _magic_defense_percent
Definition: Status.hpp:1900
std::shared_ptr< Bonuses::BonusAutoSpellOnAttack > _auto_spell_on_attack
Definition: Status.hpp:1994
std::shared_ptr< Bonuses::BonusMagicDamageReflectPercentOnSelf > _magic_damage_reflect_percent_on_self
Definition: Status.hpp:1937
std::shared_ptr< Bonuses::BonusAddAttackPercentageToSize > _add_attack_percentage_to_size
Definition: Status.hpp:1945
std::shared_ptr< Bonuses::BonusIgnoreMagicDefenseFromRace > _ignore_magic_defense_from_race
Definition: Status.hpp:1990
std::shared_ptr< Bonuses::BonusFleePercent > _flee_percent
Definition: Status.hpp:1908
std::shared_ptr< Bonuses::BonusGemstoneImmunity > _gemstone_immunity
Definition: Status.hpp:1919
std::shared_ptr< Bonuses::BonusDisableSPRecovery > _disable_sp_recovery
Definition: Status.hpp:1936
std::shared_ptr< Bonuses::BonusAddAttackPercentageToElement > _add_attack_percentage_to_element
Definition: Status.hpp:1943
std::shared_ptr< Bonuses::BonusLongWeaponDamagePercent > _long_weapon_damage_percent
Definition: Status.hpp:1939
std::shared_ptr< Bonuses::BonusIgnoreDefenseFromElement > _ignore_defense_from_element
Definition: Status.hpp:1987
std::shared_ptr< Bonuses::BonusHPVanishPercent > _hp_vanish_percent
Definition: Status.hpp:1998
std::shared_ptr< Bonuses::BonusRaise > _raise
Definition: Status.hpp:2000
std::shared_ptr< Bonuses::BonusResistSkillDamagePercent > _resist_skill_damage_percent
Definition: Status.hpp:1986
std::shared_ptr< Bonuses::BonusAddWeaponComaToElement > _add_weapon_coma_to_element
Definition: Status.hpp:1964
std::shared_ptr< Bonuses::BonusAddDamageToClass > _add_damage_to_class
Definition: Status.hpp:1956
std::shared_ptr< Bonuses::BonusUnbreakableWeapon > _unbreakable_weapon
Definition: Status.hpp:1922
std::shared_ptr< Bonuses::BonusUnbreakableShield > _unbreakable_shield
Definition: Status.hpp:1925
std::shared_ptr< Bonuses::BonusReduceSPConsumptionOfSkill > _reduce_sp_consumption_of_skill
Definition: Status.hpp:1978
std::shared_ptr< Bonuses::BonusSPDrainOnMonsterKill > _sp_drain_on_monster_kill
Definition: Status.hpp:2003
std::shared_ptr< Bonuses::BonusLearnedSkillHeal > _learned_skill_heal
Definition: Status.hpp:1979
std::shared_ptr< Bonuses::BonusHitPercent > _hit_percent
Definition: Status.hpp:1907
std::shared_ptr< Bonuses::BonusIgnoreDefenseFromRace > _ignore_defense_from_race
Definition: Status.hpp:1988
std::shared_ptr< Bonuses::BonusAttackPercent > _attack_percent
Definition: Status.hpp:1899
std::shared_ptr< Bonuses::BonusAddEleMagicDamagePercent > _add_ele_magic_damage_percent
Definition: Status.hpp:1992
std::shared_ptr< Bonuses::BonusAddItemDropOnMonsterKill > _add_item_drop_on_monster_kill
Definition: Status.hpp:2001
std::shared_ptr< Bonuses::BonusShortWeaponDamagePercent > _short_weapon_damage_percent
Definition: Status.hpp:1938
std::shared_ptr< Bonuses::BonusDisableHPRecovery > _disable_hp_recovery
Definition: Status.hpp:1935
std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToRace > _add_magic_attack_percentage_to_race
Definition: Status.hpp:1952
std::shared_ptr< Bonuses::BonusJobPercentPerRace > _job_percent_per_race
Definition: Status.hpp:1975
std::shared_ptr< Bonuses::BonusResistMagicAttackFromRace > _resist_magic_attack_from_race
Definition: Status.hpp:1955
std::shared_ptr< Bonuses::BonusMagicDamageReductionAgainstSize > _magic_damage_reduction_against_size
Definition: Status.hpp:1973
std::shared_ptr< Bonuses::BonusReduceSPConsumptionOfSkillByPercent > _reduce_sp_consumption_of_skill_by_percent
Definition: Status.hpp:1977
std::shared_ptr< Bonuses::BonusAddDefenseToClass > _add_defense_to_class
Definition: Status.hpp:1958
std::shared_ptr< Bonuses::BonusAddAttackPercent > _add_attack_percent
Definition: Status.hpp:1969
std::shared_ptr< Bonuses::BonusAddStealPercent > _add_steal_percent
Definition: Status.hpp:1933
std::shared_ptr< Bonuses::BonusUnbreakableHelm > _unbreakable_helm
Definition: Status.hpp:1924
std::shared_ptr< Bonuses::BonusSPPercent > _sp_percent
Definition: Status.hpp:1887
std::shared_ptr< Bonuses::BonusSPRecoveryPercent > _sp_recovery_percent
Definition: Status.hpp:1893
std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToSize > _add_magic_attack_percentage_to_size
Definition: Status.hpp:1953
std::shared_ptr< Bonuses::BonusDoubleAttackPercent > _double_attack_percent
Definition: Status.hpp:1897
std::shared_ptr< Bonuses::BonusDefenseElement > _defense_element
Definition: Status.hpp:1883
std::shared_ptr< Bonuses::BonusSPGainOnMobKill > _sp_gain_on_mob_kill
Definition: Status.hpp:1926
std::shared_ptr< Bonuses::BonusSPDrainPercent > _sp_drain_percent
Definition: Status.hpp:1962
std::shared_ptr< Bonuses::BonusMaxHPPercent > _max_hp_percent
Definition: Status.hpp:1885
std::shared_ptr< Bonuses::BonusItemUsageImmunity > _item_usage_immunity
Definition: Status.hpp:1940
std::shared_ptr< Bonuses::BonusSoftMagicalDefensePercent > _soft_magical_defense_percent
Definition: Status.hpp:1912
std::shared_ptr< Bonuses::BonusSkillCastPercent > _skill_cast_percent
Definition: Status.hpp:1982
std::shared_ptr< Bonuses::BonusAttackRange > _attack_range
Definition: Status.hpp:1888
std::shared_ptr< Bonuses::BonusSoftDefensePercent > _soft_defense_percent
Definition: Status.hpp:1910
std::shared_ptr< Bonuses::BonusMagicDamageImmunity > _magic_damage_immunity
Definition: Status.hpp:1917
std::shared_ptr< Bonuses::BonusAddMovementSpeedPercent > _bonus_add_movement_speed_percent
Definition: Status.hpp:1890
std::shared_ptr< Bonuses::BonusIgnoreMagicDefenseFromElement > _ignore_magic_defense_from_element
Definition: Status.hpp:1989
std::shared_ptr< Bonuses::BonusHealOfSkillCastedOnSelf > _heal_of_skill_casted_on_self
Definition: Status.hpp:1980
std::shared_ptr< Bonuses::BonusSizeModifierImmunity > _size_modifier_immunity
Definition: Status.hpp:1916
std::shared_ptr< Bonuses::BonusAttackElement > _attack_element
Definition: Status.hpp:1882
std::shared_ptr< Bonuses::BonusCastCancelImmunity > _cast_cancel_immunity
Definition: Status.hpp:1915
std::shared_ptr< Bonuses::BonusCriticalRacePercent > _critical_race_percent
Definition: Status.hpp:1971
std::shared_ptr< Bonuses::BonusAutoSpellOnSkill > _auto_spell_on_skill
Definition: Status.hpp:1993
std::shared_ptr< Bonuses::BonusAddWeaponComaToSubElement > _add_weapon_coma_to_sub_element
Definition: Status.hpp:1966
std::shared_ptr< Bonuses::BonusInfiniteEndure > _infinite_endure
Definition: Status.hpp:1921
std::shared_ptr< Bonuses::BonusKnockBackImmunity > _knockback_immunity
Definition: Status.hpp:1941
std::shared_ptr< Bonuses::BonusRessistEffect > _ressist_effect
Definition: Status.hpp:1950
std::shared_ptr< Bonuses::BonusWeaponDamageImmunity > _weapon_damage_immunity
Definition: Status.hpp:1918
std::shared_ptr< Bonuses::BonusSkillAttack > _skill_attack
Definition: Status.hpp:1976
std::shared_ptr< Bonuses::BonusMiscDefensePercent > _misc_defense_percent
Definition: Status.hpp:1901
std::shared_ptr< Bonuses::BonusAddEffectOnDamage > _add_effect_on_damage
Definition: Status.hpp:1948
std::shared_ptr< Bonuses::BonusAddMagicAttackPercentageToElement > _add_magic_attack_percentage_to_element
Definition: Status.hpp:1951
std::shared_ptr< Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf > _ranged_weapon_damage_reflect_percent_on_self
Definition: Status.hpp:1930
std::shared_ptr< Bonuses::BonusAddWeaponComaToRace > _add_weapon_coma_to_race
Definition: Status.hpp:1965
std::shared_ptr< Bonuses::BonusCastPercent > _cast_percent
Definition: Status.hpp:1884
std::shared_ptr< Bonuses::BonusCriticalRace > _critical_race
Definition: Status.hpp:1970
std::shared_ptr< Bonuses::BonusDamageSplashRange > _damage_splash_range
Definition: Status.hpp:1928
std::shared_ptr< Bonuses::BonusAutoSpellOnReceiveDamage > _auto_spell_on_receive_damage
Definition: Status.hpp:1995
std::shared_ptr< Bonuses::BonusAttackOnDefenseRatioForElement > _attack_on_defense_ratio_for_element
Definition: Status.hpp:1905
std::shared_ptr< Bonuses::BonusSubAttackPercentageFromElement > _sub_attack_percentage_from_element
Definition: Status.hpp:1946
std::shared_ptr< Bonuses::BonusHardDefensePercent > _hard_defense_percent
Definition: Status.hpp:1911
std::shared_ptr< Bonuses::BonusAddWeaponComaToSubRace > _add_weapon_coma_to_sub_race
Definition: Status.hpp:1967
std::shared_ptr< Bonuses::BonusPerfectHitPercent > _perfect_hit_percent
Definition: Status.hpp:1902
std::shared_ptr< Bonuses::BonusWeaponBreakPercent > _weapon_break_percent
Definition: Status.hpp:1931
std::shared_ptr< Bonuses::BonusAddEffectOnMagicAttack > _add_effect_on_magic_attack
Definition: Status.hpp:1954
std::shared_ptr< Bonuses::BonusHPDrainOnMonsterKill > _hp_drain_on_monster_kill
Definition: Status.hpp:2002
std::shared_ptr< Bonuses::BonusUnbreakableArmor > _unbreakable_armor
Definition: Status.hpp:1923
std::shared_ptr< Bonuses::BonusSkillKnockback > _skill_knockback
Definition: Status.hpp:1981
std::shared_ptr< Bonuses::BonusAddMagicalDefenseToClass > _add_magical_defense_to_class
Definition: Status.hpp:1959
std::shared_ptr< Bonuses::BonusAllStatus > _all_status
Definition: Status.hpp:1881
std::shared_ptr< Bonuses::BonusAttackOnDefenseRatioForRace > _attack_on_defense_ratio_for_race
Definition: Status.hpp:1906
std::shared_ptr< Bonuses::BonusCriticalDamagePercent > _critical_damage_percent
Definition: Status.hpp:1934
std::shared_ptr< Bonuses::BonusAddEffectWhenDamaged > _add_effect_when_damaged
Definition: Status.hpp:1949
std::shared_ptr< Bonuses::BonusHPDrainValue > _hp_drain_value
Definition: Status.hpp:1961
std::shared_ptr< Bonuses::BonusPerfectDodgePercent > _perfect_dodge_percent
Definition: Status.hpp:1909
std::shared_ptr< Bonuses::BonusRestartWithFullRecovery > _restart_with_full_recovery
Definition: Status.hpp:1914
std::shared_ptr< Bonuses::BonusDamageReductionAgainstSize > _damage_reduction_against_size
Definition: Status.hpp:1972
std::shared_ptr< Bonuses::BonusMaxSPPercent > _max_sp_percent
Definition: Status.hpp:1886
std::shared_ptr< Bonuses::BonusSPVanishPercent > _sp_vanish_percent
Definition: Status.hpp:1999
std::shared_ptr< Bonuses::BonusMagicAttackPercent > _magic_attack_percent
Definition: Status.hpp:1898
std::shared_ptr< Bonuses::BonusSkillVariableCastPercent > _skill_variable_cast_percent
Definition: Status.hpp:1985
std::shared_ptr< Bonuses::BonusSPDrainValue > _bonus_sp_drain_value
Definition: Status.hpp:1963
std::shared_ptr< Bonuses::BonusGearFuelImmunity > _gear_fuel_immunity
Definition: Status.hpp:1920
std::shared_ptr< Bonuses::BonusExpPercentPerRace > _exp_percent_per_race
Definition: Status.hpp:1974
std::shared_ptr< Bonuses::BonusAutoSpellOnSelf > _auto_spell_on_self
Definition: Status.hpp:1996
std::shared_ptr< Bonuses::BonusSkillCooldown > _skill_cooldown
Definition: Status.hpp:1983
std::shared_ptr< Bonuses::BonusSkillFixCastPercent > _skill_fix_cast_percent
Definition: Status.hpp:1984
std::shared_ptr< Bonuses::BonusHPDrainPercent > _hp_drain_percent
Definition: Status.hpp:1960
std::shared_ptr< Bonuses::BonusAddEleWeaponDamagePercent > _add_ele_weapon_damage_percent
Definition: Status.hpp:1991
std::shared_ptr< Bonuses::BonusHardMagicalDefensePercent > _hard_magical_defense_percent
Definition: Status.hpp:1913
std::shared_ptr< Bonuses::BonusAttackSpeedPercent > _attack_speed_percent
Definition: Status.hpp:1891
std::shared_ptr< Bonuses::BonusAddMagicDamageToClass > _add_magic_damage_to_class
Definition: Status.hpp:1957
std::shared_ptr< Bonuses::BonusAddAttackPercentageToRace > _add_attack_percentage_to_race
Definition: Status.hpp:1944
std::shared_ptr< Bonuses::BonusCriticalPercent > _critical_percent
Definition: Status.hpp:1903
std::shared_ptr< Bonuses::BonusHPGainOnMobKill > _hp_gain_on_mob_kill
Definition: Status.hpp:1927
std::shared_ptr< Bonuses::BonusArmorBreakPercent > _armor_break_percent
Definition: Status.hpp:1932
std::shared_ptr< Bonuses::BonusAddAttack > _add_attack
Definition: Status.hpp:1968
std::shared_ptr< Bonuses::BonusCriticalDefense > _critical_defense
Definition: Status.hpp:1894
std::shared_ptr< Bonuses::BonusSubAttackPercentageFromRace > _sub_attack_percentage_from_race
Definition: Status.hpp:1947
Structure used to store and convey item data in the state machine and in communication with the clien...
Definition: ItemDefinitions.hpp:414
Definition: MonsterDefinitions.hpp:203
Definition: Horizon.hpp:84