1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00
Commit Graph

4972 Commits

Author SHA1 Message Date
ArseniyShestakov
8524bdbc25 VCAI: use copy_if instead of erase_if for teleport exit probing list 2015-03-09 03:24:39 +03:00
ArseniyShestakov
496338813c VCAI: explicitly check for teleportation between subterranean gates 2015-03-09 02:27:49 +03:00
ArseniyShestakov
8f8d237d5d Use isTeleportChannel callback functions to check teleport channel type 2015-03-09 02:13:40 +03:00
ArseniyShestakov
0c1a37e5a7 CGameInfoCallback: more functions to check teleport channel types 2015-03-09 02:01:24 +03:00
ArseniyShestakov
eff4da1d03 ETeleportChannelType: is now strongly typed enumeration 2015-03-09 01:45:39 +03:00
ArseniyShestakov
3b057e0408 CGMonolith: fix switch formatting 2015-03-09 01:27:40 +03:00
ArseniyShestakov
8d901ad4d0 VCAI Explore goal: fix switch formatting 2015-03-09 01:25:52 +03:00
ArseniyShestakov
606013c535 CGSubterraneanGate::postInit put const back
Originally I removed it when change this code to actually change object.
Though this sorting can work with constant object just fine.
2015-03-08 21:16:30 +03:00
ArseniyShestakov
826a64b579 Pack of tiny code improvements for @alexvins request 2015-03-08 20:19:00 +03:00
ArseniyShestakov
f490ea1fcd VCAI Explore goal: remove useless check 2015-03-08 18:36:25 +03:00
ArseniyShestakov
a741c5fefd Added myself to AUTHORS file 2015-03-08 18:11:43 +03:00
ArseniyShestakov
6d77322d6a CGMonolith: add text dialog when player visit one-way monolith exit 2015-03-08 18:07:06 +03:00
ArseniyShestakov
afac28a2f5 VCAI little fix for typo in retreiveVisitableObjs 2015-03-08 17:56:59 +03:00
ArseniyShestakov
9ece636cf8 VCAI Explore goal: add monolith's exploration support
Explore will also suggest AI to re-enter bidirectional teleporter in case of one of it's exits is not visible for some reason.

Also now AI won't try to visit teleporters in case if it's know that it's channel is impassable. E.g if map have several entrance monoliths of with same same SubID that don't have exit then AI will only try to visit one of them and later of he'll know that all other monoliths of this subtype is blocked because they all using same channel.
2015-03-08 17:49:14 +03:00
ArseniyShestakov
12cf883740 VCAI: add all new movement code include teleports and transit support 2015-03-08 17:47:58 +03:00
ArseniyShestakov
665712c196 VCAI: add any newly found teleports to knownTeleportChannels
Now all new objects added to visitableObjs only using addVisitableObj so we can catch them for teleports handling.
I also simplified one of retreiveVisitableObjs functions because it's only used for inserting things into visitableObjs.
2015-03-08 17:38:09 +03:00
ArseniyShestakov
ab7ad4741a AIStatus: add teleport channel probing mode
When AI going through bidirectional teleport it's always getting list of all available exits.
If some of exits are invisible it's will attempt to visit each of them teleport probing begins.
2015-03-08 17:23:56 +03:00
ArseniyShestakov
5233b60243 CPlayerInterface: all new code for automatic teleport usage 2015-03-08 17:17:24 +03:00
ArseniyShestakov
530b63f7c4 CPathfinder: add all new code for pathfinding via teleporters
Each kind of teleporter have own function that determine if it's should or shouldn't be used.
For now Monolith with bidirectional channels and Subterranean Gate are united.
2015-03-08 17:13:26 +03:00
ArseniyShestakov
3773859e9d CGameHandler::moveHero allow transit, but for teleports only 2015-03-08 17:08:57 +03:00
ArseniyShestakov
21aaad6972 MoveHero: add transit movement option
Transit is new option for hero movement. If it passed for movement then hero can get get on tile without visiting of object on it.
Currently it's will be only allowed is object under destination is teleport.
2015-03-08 17:04:09 +03:00
ArseniyShestakov
25656aa586 Add showTeleportDialog everywhere except actual code for AI and player
Just like TeleportDialog it's based off showBlockingDialog, but as number of package is higher when possible showTeleportDialog will be after other dialogs handling code.
2015-03-08 16:52:50 +03:00
ArseniyShestakov
18535db0ef Add TeleportDialog and CTeleportDialogQuery
TeleportDialog is based off BlockingDialog and it's needed for server to ask client what teleport hero should be teleported to.
It's also contain list of possible exits, identifier of currently used channel and also impassable option.
If impassable set to true then client will remember that current teleport channel is lack of exit point.
2015-03-08 16:37:33 +03:00
ArseniyShestakov
8d7b6d119f CGameInfoCallback: add functions that gather information about teleport channels
This code belongs to callback because both player and AI shouldn't directly access information about teleport channels.
For example pathfinder code need to check teleport channel type only based on information about objects player already seen.
2015-03-08 16:21:14 +03:00
ArseniyShestakov
1c2afc659f Config: replace teleport handler with monolith, subterraneanGate and whirlpool 2015-03-08 16:17:33 +03:00
ArseniyShestakov
c9eba40fe6 Updated CGTeleport and new CGMonolith / CGSubterraneanGate / CGWhirlpool
Now CGTeleport is not publicly available handler, but generic class for teleport channels usage.
Teleport channels are stored as part of information about the map.
2015-03-08 16:11:23 +03:00
ArseniyShestakov
04a1df29ad Add TeleportChannel / TeleportChannelID / ETeleportChannelType
TeleportChannel is structure that contain two vectors of entrances and exits for certain teleport channel. It's also store passability state independently which almost only useful for Player and AI as they can't know if channel passible or not until enough entrances / exits are visible or server passed them information that certain channel is impassible when they visited entrance.

ETeleportChannelType is determined by checking intersection between entrances and exit vectors or checking their size:
 - IMPASSABLE: one of vectors empty or only one entrance id is same as only one exit id.
 - BIDIRECTIONAL: contents of both vectors is exactly the same.
 - UNIDIRECTIONAL: contents of both vectors do not intersect.
 - MIXED: contents of vectors only partially intersect. Not currently used; added for future modding.
2015-03-08 15:18:53 +03:00
ArseniyShestakov
f145c82031 TerrainTile: implement exclusion for topVisitable functions
For pathfinder we usually want to check what object hero staying on.
Hero is always top object so we need option to exclude it.
2015-03-08 15:05:24 +03:00
ArseniyShestakov
e4f591ba84 vstd: add function to check vector intersection 2015-03-08 14:41:17 +03:00
DjWarmonger
6ace53d8b9 Functional RMG Seer Huts, still there are some mysterious bugs. 2015-03-01 13:26:54 +01:00
DjWarmonger
9453250e0f Spawn quest arts in nearby zones. 2015-03-01 10:20:49 +01:00
DjWarmonger
67ab90616d Seer Huts with exp / gold rewards. 2015-03-01 09:46:09 +01:00
DjWarmonger
dd887eb929 Fixes for Seer Huts. 2015-03-01 09:07:43 +01:00
DjWarmonger
4f1d96e5e8 Seer Huts part 2. 2015-02-28 22:37:04 +01:00
DjWarmonger
607375a9bc Generate Seer Huts with creature rewards 2015-02-28 21:14:45 +01:00
AlexVinS
5fda2aac9a formatting 2015-02-26 20:59:18 +03:00
AlexVinS
f4c683cd5e Move VievXXX logic to server side (except expert ViewEarth) 2015-02-26 17:15:17 +03:00
AlexVinS
b6038240ab Implemented DISGUISE spell. Untested 2015-02-26 08:39:59 +03:00
AlexVinS
025a00362b Simplify CBattleInterface::spellCast 2015-02-26 08:39:58 +03:00
AlexVinS
b9bdc95a7e Handle monster agressivness for VISIONS spell 2015-02-26 08:39:57 +03:00
AlexVinS
b846b717a1 implemented VISIONS spell (partially)
(-) todo: agressivnes
2015-02-26 08:39:56 +03:00
AlexVinS
2156204306 Visions spell in case of monsters 2015-02-26 08:39:55 +03:00
AlexVinS
36cdb2968b Refactoring 2015-02-26 08:39:54 +03:00
AlexVinS
666d7a4f45 Start implementing VISIONS and DISGUISE 2015-02-26 08:39:53 +03:00
AlexVinS
f6e83685e7 Initial implementation of VIEW_AIR & VIEW_EARTH 2015-02-26 08:39:52 +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
AlexVinS
685deddac1 Start spell-relatet files reorganisation
* moved existing files to separate directory
-> todo: split mechanics
2015-02-26 08:39:48 +03:00
AlexVinS
c7c235c0ca Rename afterCast to applyBattle
* afterXXX will be used in future event-driven mechanics
2015-02-26 08:39:47 +03:00
AlexVinS
66ca4bc0c2 TOWN_PORTAL callback is too specific to ba part on spellwindow class 2015-02-26 08:39:46 +03:00