1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-20 20:23:03 +02:00
Commit Graph

50 Commits

Author SHA1 Message Date
AlexVinS
483a4689ce Fixes for code review issues 2021-02-20 04:57:50 +03:00
AlexVinS
ecaa9f5d0b Entities redesign and a few ERM features
* Made most Handlers derived from CHandlerBase and moved service API there.
* Declared existing Entity APIs.
* Added basic script context caching
* Started Lua script module
* Started Lua spell effect API
* Started script state persistence
* Started battle info callback binding
* CommitPackage removed
* Extracted spells::Caster to own header; Expanded Spell API.
* implemented !!MC:S, !!FU:E, !!FU:P, !!MA, !!VR:H, !!VR:C
* !!BU:C, !!BU:E, !!BU:G, !!BU:M implemented
* Allow use of "MC:S@varName@" to declare normal variable (technically v-variable with string key)
* Re-enabled VERM macros.
* !?GM0 added
* !?TM implemented
* Added !!MF:N
* Started !?OB, !!BM, !!HE, !!OW, !!UN
* Added basic support of w-variables
* Added support for ERM indirect variables
* Made !?FU regular trigger
* !!re (ERA loop receiver) implemented
* Fixed ERM receivers with zero args.
2021-02-14 19:05:43 +03:00
AlexVinS
f126a34a5e Fixed https://bugs.vcmi.eu/view.php?id=2904 2018-03-04 11:15:24 +03:00
AlexVinS
0b70baa95e Spells configuration version 2 (effect-based)
* Indirect spell effects loading
* Json serializer improvements
* spell->canBeCastAt do not allow useless cast for any spell
* Added proxy caster class for spell-created obstacles
* Handle damage from spell-created obstacles inside mechanics
* Experimental GameState integration/regression tests
* Ignore mod settings and load only "vcmi" mod when running tests
* fixed https://bugs.vcmi.eu/view.php?id=2765 (with tests)
* Huge improvements of BattleAI regarding spell casts
* AI can cast almost any combat spell except TELEPORT, SACRIFICE and obstacle placement spells.
* Possible fix for https://bugs.vcmi.eu/view.php?id=1811
* CStack factored out to several classes
* [Battle] Allowed RETURN_AFTER_STRIKE effect on server side to be optional
* [Battle] Allowed BattleAction have multiple destinations
* [Spells] Converted limit|immunity to target condition
* [Spells] Use partial configuration reload for backward compatibility handling
* [Tests] Started tests for CUnitState
* Partial fixes of fire shield effect
* [Battle] Do HP calculations in 64 bits
* [BattleAI] Use threading for spell cast evaluation
* [BattleAI] Made AI be able to evaluate modified turn order (on hypothetical battle state)
* Implemented https://bugs.vcmi.eu/view.php?id=2811
* plug rare freeze when hypnotized unit shots vertically
* Correctly apply ONLY_MELEE_FIGHT / ONLY_DISTANCE_FIGHT for unit damage, attack & defense
* [BattleAI] Try to not waste a cast if battle is actually won already
* Extended JsonSerializeFormat API
* fixed https://bugs.vcmi.eu/view.php?id=2847
* Any unit effect can be now chained (not only damage like Chain Lightning)
** only damage effect for now actually uses "chainFactor"
* Possible quick fix for https://bugs.vcmi.eu/view.php?id=2860
2018-02-08 11:37:21 +03:00
AlexVinS
f1a4831813 [Spells] Get rid of SpellTargetingContext. 2017-07-16 01:43:50 +03:00
AlexVinS
4f14f22d3a Unified CStack ammo, casts and counterattacks
* it is possible now to add casts and shoots OTF (f.e. with spell bonus)

Centralized stack 'ammo' loading from bonus system.
* introduced small proxy class for local bonus cache
(no need to use global cache if particular selector used on node only in one place)
* handle killing resurrected creatures
* use IBonusBearer::MaxHealth() where possible
* Fixed https://bugs.vcmi.eu/view.php?id=2486
* Possible fix for 0 HP after resurrection.
* Hack-fixed https://bugs.vcmi.eu/view.php?id=2584
* Unified CStack health API
* Use CHealth for CStack count and health points
* increased SERIALIZATION_VERSION
2017-07-08 20:29:59 +03:00
AlexVinS
3d1a84875e Queries refactoring
* Moved SUMMON_BOAT special case to mechanics
* Partially moved Town portal logic to mechanics class
* Added generic query reply to CCallback
* Redesigned Queries so that base API do not depends on CGameHandler
* Got rid of CGameHandler::castSpellRequest
* Removed CGameHandler::castSpell
* Added new Query type for town portal dialog (not used yet)
2017-07-03 21:43:04 +03:00
AlexVinS
dad0569bc7 Relaxed cast requirements for Quicksand 2016-10-31 15:38:53 +03:00
AlexVinS
a03419e7d9 Fixed http://bugs.vcmi.eu/view.php?id=2269 2016-09-24 11:25:29 +03:00
AlexVinS
cffc4b2ab5 fixed patch obstacle placement inside walls 2016-09-23 20:27:55 +03:00
AlexVinS
374e30c972 Added a few safety checks 2016-09-18 16:30:03 +03:00
AlexVinS
3fa62beb6d Do not allow to cast Cure if there is nothing to cure. 2016-09-11 13:48:14 +03:00
AlexVinS
1e32c71e47 Make sure that there is no unwanted stack affect by spells. 2016-09-06 08:20:17 +03:00
AlexVinS
f1d0bede11 Moved all affected stacks calculations to mechanics 2016-09-06 07:05:55 +03:00
AlexVinS
18fc94d709 WIP on SpellCastContext 2016-09-06 06:40:23 +03:00
AlexVinS
82ac035340 OO design for obstacle spells. 2016-09-05 13:34:48 +03:00
AlexVinS
f3b7fe947c Reworked spell target existence check.
* related to 2269
2016-09-05 11:36:25 +03:00
AlexVinS
eb128a0207 More style tweaks 2016-09-04 05:15:37 +03:00
AlexVinS
5d329b40a4 Factored spell action selection for location target. 2016-08-30 12:20:15 +03:00
AlexVinS
b09f150e7b Factored out battleCanCastThisSpellHere 2016-08-30 12:20:11 +03:00
AlexVinS
be67faad90 Drafts 2016-08-30 12:20:03 +03:00
AlexVinS
f053754653 Advance REMOVE_OBSTACLE mechanics 2016-08-30 12:20:01 +03:00
AlexVinS
40e6e0c143 Move REMOVE_OBSTACLE-related code from callback to where it should be. 2016-08-30 12:19:59 +03:00
AlexVinS
f6715ad787 Use ISpellCaster in CSpell::canBeCast.
* -2 todo notes
2016-08-30 12:12:46 +03:00
AlexVinS
4d9058e412 Whitespace cleanup. (No code changes.) 2016-02-15 13:34:37 +03:00
AlexVinS
75c2566410 "const" tweak 2015-09-29 17:26:51 +03:00
AlexVinS
947f6089d5 Use ISpellCaster in isImmuneByStack 2015-09-29 17:26:49 +03:00
AlexVinS
a4d4851d80 Fix typo: casted->cast 2015-09-29 17:26:48 +03:00
AlexVinS
baba3a46e1 Centralize creature spell bonuses handling
* unified heal and damage calculation
* apply SPELL_DAMAGE_REDUCTION, MORE_DAMAGE_FROM_SPELL for Fairy dragon
2015-09-29 17:26:35 +03:00
AlexVinS
9ed9075afc Introduce calculateHealedHP again, now in better place. 2015-09-29 17:26:29 +03:00
AlexVinS
0929e009db Remove suspicios code in display damage calculation 2015-09-29 17:26:28 +03:00
AlexVinS
16f0714474 More usage of OOP in HealingSpellMechanics::applyBattleEffects 2015-09-29 17:26:28 +03:00
AlexVinS
0fecb40039 Extract HealingSpellMechanics
* healing effects are too specific to be allowed for any spell
* mixing heal with direct damage does not make sence
* mixing heal with timed effect can be easy allowed if needed
2015-09-29 17:26:27 +03:00
AlexVinS
2d8288d95a Fix mantiss 0002167
* also refactored summon mechanics
2015-04-11 12:09:48 +03:00
AlexVinS
46e7a0f829 Remove no longer needed (and incomplete) explicit target existence check 2015-04-11 10:19:34 +03:00
AlexVinS
6356247108 Add dispell effect to ANTI_MAGIC
* fixes 0002156
2015-04-11 10:19:33 +03:00
AlexVinS
e4220fef82 Formatting 2015-04-11 10:19:33 +03:00
AlexVinS
9d0b29b973 expert DISPELL also removes spell-created obstacles 2015-04-11 10:19:32 +03:00
AlexVinS
1747b5af9a DISPELL should ignore all immunities 2015-04-11 10:19:29 +03:00
AlexVinS
67f917edbb Partial fix for 0001554 2015-04-11 10:19:28 +03:00
AlexVinS
10668974d6 Move SACRIFICE target existence check to mechanics 2015-04-03 00:35:29 +03:00
AlexVinS
0cce1ef2f1 Move ANOTHER_ELEMENTAL_SUMMONED problem check to SummonMechanics class 2015-04-03 00:02:15 +03:00
AlexVinS
9600446cf9 +smart target, +hit animation 2015-03-18 17:48:32 +03:00
AlexVinS
c81d4203d7 Do not try to cast EARTHQUAKE with no fort 2015-03-18 16:39:07 +03:00
AlexVinS
69c458e881 initial implementation. 2015-03-18 13:27:07 +03:00
DjWarmonger
f7b5ecf642 Something that compiles. 2015-03-09 20:07:28 +01:00
DjWarmonger
f32849a73e Attempt to compile refactored spells in MSVS. 2015-03-09 19:24:45 +01:00
AlexVinS
5fda2aac9a formatting 2015-02-26 20:59:18 +03:00
AlexVinS
1333f8e410 Split mechanics implementation 2015-02-26 08:39:51 +03:00
AlexVinS
ce19c76324 Added draft of new file structure 2015-02-26 08:39:50 +03:00