Regarding OpenKore 2.x.
Environment is a wall between real network stuff and everything other (AI, user, AI-level and user-level plugins).
Environment should have common not-RO binded concepts with common interfaces, such as:
- ActorList (with additional properties)
and network-dependent implementations.
Possible RO Environment classes
- You actions: sendAction send(Guild/Battleground)Chat sendDeal/OpenShop/PartyOrganize sendEmotion/Look/Memo/Move
- Familiar (Mercenary, Homunculus, Pet) actions: sendHomunculusCommand/MercenaryCommand/Move/Attack/StandBy/Name sendPetMenu/Name
- Item actions: sendArrowCraft sendCardMerge(Request) sendItemUse send(Un)Equip/ProduceMix/Identify/RepairItem/Cooking/WeaponRefine
- (stuff around the character) moves: sendTake
- Actor::Item based
- Inventory moves: sendCartAdd sendDealAddItem sendDrop sendSell(Bulk) sendStorageAdd
- Cart actions: sendCompanionRelease sendChangeCart; moves: sendCardGet sendStorageAddFromCart
- Storage actions: sendStorageClose; moves: sendStorageGet(ToCart)
- Store (basic NPC, cash, venders and our own) actions: sendCloseShop; moves: sendBuyBulk(Vender) sendCashShopBuy
- Actor::Player based
- Friends moves: sendFriendRemove
- Party sendPartyKick/Leave/ShareEXP/Option
- Guild actions: sendGuildMemberPositions/Notice/PositionInfo; moves: sendGuildBreak/JoinRequest/Leave/MemberKick
- Chatroom actions: sendChatRoomBestow/Change; moves: /Join/Kick/Leave
- Skill actions: sendSkillUse(Loc) sendAddSkillPoint sendAutoSpell
- Deal (complex object) sendCurrentDealCancel sendDealFinalize/OK/Trade
- Spell (subclass of some "FieldEvent" or "FieldEffect"?)
Random actions on unavailable objects (invite for party)?
Replies to misc requests (party, deal, friends)?