• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TheImaginedServer & TheImaginedClient (custom TFS and Client) - Updated 1/16/2015

Flatlander

Species Developer
Joined
Feb 17, 2009
Messages
2,461
Solutions
3
Reaction score
1,356
Location
Texas
Hi Guys,
1/16/2015 - Updated NPCs and Monster Inventory, fixed Line of Sight. Updated completed items on list and added a few new goals.

As some of you may know I am working on customizing TFS for my servers.
I would like to know if you guys have anything you want me to add (I Plan on releasing it once it is bug-free so everyone can use it)

Planned ClientFeatures:
Main Features:

  • Fully Functioning UI Options: Make it so you can have better on-screen UI options.
  • Fully Functioning Bot: Make an in-client bot that rivals Elf-Bot
  • Make Client Universal: Make Client able to connect to any server 8.6+
  • Make an in-client config for advanced options: (Like Creature Stacking)
Sprite and Animation Features
  • Tile Size: Allow you to change the size of Sprites (Currently 32x32 pixels)
  • [done] Creature Stacking: Make it so creatures stacked on the same tile are displaced (looks amazing for smaller creatures)
  • Idle Animations: Make it so while standing still your character can play short animations. (Each outfit can have a "Idle Animation")
  • Better Lighting: (Make it so light doesn't go through walls, and maybe put in shadows)
  • Timed/Animated DistanceShoots: make it so you can have animated projectiles and choose the time it takes to reach the destination.
Integration:
  • Twitch.tv In Client: Make twitch streaming integrated into the client

Planned Server Features:

Config.lua Changes

  • [Done] World Light: Add day/night time to config, or disable. Also add LUA functions to change world light, or server time.
  • House Config Options: House options in config.lua. Are houses PZ? Can change house name? Use house keys?(aleta grav creates a key for the door, rather than door rights)
  • [Done] Push Config: Add more push config into config.lua. Level Push Difference (must be within ## levels to push player. Can push down floors? Can push up floors?
  • [50% done] Summon config: More customize features for summons. Summons go Wild (summons become monsters when you unsummon them or the player dies) Summons have Corpse (customize whether summons have corpse) Do Summons Level (Can summons level up and get stronger?) Summon Exp % (How much experience a summon gets for damage) Summon Master Experience (Percent of experience the master gets for summon damage)
Combat Changes - NEW
All Combat Changes will be configurable in config.lua, vocations.xml, items.xml, and through player storage values.
  • Dodge Chance: Dodge change will be added to the game (default will be 0 - disabled) and the dodge animation will be configurable in the config.lua
  • [Done] customBlockMode: Instead of using tibia's "Defense" system for blocking, the game will use blockChance, blockValue, and blockPercent to handle shields.
  • [50% Done] Player Resistances: all resists (fire, ice, physical, etc) will be configurable in config.lua, vocations.xml, items.xml, and player storage.
  • [10% Done] Critical Chance: All crit values will be configurable in config.lua, vocations.xml, items.xml, and player storage.
  • [Done] LUA Handling: Ability to TURN OFF all source handling of Armor, Defense, etc so you can do it yourself in onStatsChange creaturescript
Creaturescript Changes

  • [Done] onWalk(cid, fromPos, toPos, dir): Make fully functional onWalk creaturescript
  • [Done] onMonsterSpawn(cid): Creature Event that runs when any creature spawns (so you can add creature scripts to all creatures that spawn on your server)
  • [Done] onMoveItem(cid, item, count, toContainer, fromContainer, fromPosition, toPosition)
Monster.xml Changes
  • [Done] Monster View Range: Added XML flag to change Monster View Range (So some monsters can see you from farther than 11 SQM)
  • [Done] Monster Aggro: Added Aggro to replace target change. Creatures can now be set to change target depending on aggro a player has. So doing too much DPS, being closer, higher level, lower level, low health, etc can all change who the monster targets.
  • [Done] Monster Group Flee: If a monster is outnumbered it will run away. (Examples: If you have a cave where 10 orcs spawn, and you enter the cave with 5 players, if you kill 6 orcs and 4 are left, the 4 will run away scared)
  • Monster Hunt Solo Players: Monster will only attack players who are alone, otherwise they will run away.
  • Monster cornered: If a monster is running away, but cornered, it will stop running away and attack.
  • [Done]Monsters/NPCs can fight other Monsters/NPCs: (Have Orcs automatically fight Minotaurs, etc)
  • [Done]Monster/NPC Self Defense: Creature will attack back if attacked (even if currently not hostile)
  • [Done]Creature Alert Friends: Creature will alert nearby monsters to your presence.
  • [Done]Fix monster walkback: Monsters actually walk back to spawn location, rather than teleport.
  • Monster Level Randomizer: Be able to set damage multipliers, and even spells with level requirements for monsters.
  • [50% Done] More Monster.xml Options: Reflect Elements, life steal, health/mana regen, field damage thresh hold (how much damage a field has to do to stop the creature from walking over it).
  • [Done]Monster Hold Items: Create a list of items creatures are holding. (This can be used to have monsters pick up items off the ground, or from players/creatures they kill) Also could make a "steal" ability so players can steal items from each other, npcs, or monsters.
  • [Done]Monster Patrol: I want to be able to make this work in the Map Editor (I want it to be saved to spawns.xml) But Basically you should be able to set up Patrol Routes for Monsters.
  • Monster Summon Count: option to summon multiple creatures at the same time. Also able to select a summon location (target="0" summons on yourself, target="1" summons on target)
  • Monster Call Creature: Ability to set creatures that a monster can spawn (rather than summon) with same options as summoning.
  • Can Summons Summon: set in the monster.xml if a summon can summon.
  • Summon Lifetime: (Will remove creature after time limit)
  • Is Monster Healable: Set if a monster can be healed.
  • [Done] Mana for Monsters: Make it so monsters can start with mana.
  • [Done] Regeneration for Monsters: Make it so monsters regen health and mana.
  • [Done] Monster Spellcost: Make it so monster spells can cost health or mana when cast.
NPC Changes
  • [Done]NPC pathing: not walk on chairs/tables unless trapped. (So you can make NPCs that are waiters and they won't walk all over tables and chairs)
  • [Done]NPCs Save to SQL: Npcs save the SQL so inventory and bank balance will save.
  • [Done] NPC/Monster Outfit Randomizer: Make it so each time the creature spawns, it will be wearing new clothes.
  • NPC Blocked Trigger: If NPC is blocked, can either trigger actions (push thing, attack creature, or talk to thing that is blocking it)
  • [Done]NPC Timed Events: Make NPCs able to have tasks, or dialog different depending on the time.
  • [Done]NPC Aggro: NPC can be given aggro, which can make them attack, follow, or talk to certain players depending on what you want.
  • [Done]Attackable NPCs: Make NPCs able to be attacked, and respawn if killed.
Tibia HUD/Chat Changes
  • [Done] Creature Nickname: Client displays the creature Nickname. This is so you can change names of creatures/npcs without editing the file. Example: Have 3 hunters spawn, but their names will randomize. Hunter Bill, Hunter Joe, Hunter Susan. (More RPG when monsters are unique)
  • Player Chat Config: customize what appears in the console when player's chat.
Tibia Spell Options
  • Player Charge-Move: Make it so when a player walks, it will push other creatures out of the way. (If there is no tile to push creature, the player will walk on top of the creature)
  • More Spell Customization: (health cost, item requirements, params that aren't playernames, skill requirements.
  • [NEW] Conditions Configuration: Make it possible to create or edit conditions inside of a function.
Vocation.xml Changes
  • More Vocation.xml Options: Change Corpse IDs (male/female), Speed gain per level, max summons, resistances and immunities, life steal, reflect element, pushable, walk-through.
Requests
  • @Anakonta Config.lua add more Inventory Slots: Make it so you can increase the inventory slots in config.lua, and OTClient will automatically update the Inventory Window to show these changes when logging in.

Let me know if there are any other things you wished TFS could do or any LUA functions you wish existed.
:) Hopefully this customized TFS will change the OT community to make better and more fun servers :).
 
Last edited:
I would like there to be more ways to interact with NPCs.

The following are a few ideas. (not every one of these is exactly a source edit)
I will include an example/reason of use for each suggestion.


  • NPCs engaging YOU in conversation: Some NPCs will start a conversation with you if you get in range of them, or in sight of them.
Example uses: A miner NPC standing in front of a mine shaft will walk up to you and start a conversation dialog about how dangerous the mine shaft is. This could be a way to kinda 'force' players into quest dialog, and it adds more immersion into the game.

Example 2: A guard can block a passage, and if you get close to him, he will tell you to go away, and push you away. This would add more ambiance to the gameworld, and install nature feeling interactions that are expected, but do not currently occur.

  • Attackable NPCSs: You can attack NPCs, and they will attack you back. They could also 'aggro' on to you based on conversation pieces. They would respawn at their map placement after a time, if they die.
Example uses: What can I say, it's one of the only interesting features in the Elder Scrolls game series. Just being able to attack NPCs, and loot their corpses creates so much more immersion and interaction in the game world.

Example 2: I've always wanted NPC dialog to be a bit more involved, so being able to 'offend' an NPC, or just pick the wrong response option, and have the NPC actually attack you back for it, would be great for effect, and cut down a bit on 'fishing for responses' when talking to an NPC.


  • Time based interactions: Simply just having the NPCs do certain events, or allow for certain dialog based on Tibia Time, or real world time, or even both.
Example: Keeping in theme of your restaurant/bar theme, many bars have a happy hour, or a 'early bird special'. NPCs can offer special prices, or complete different dishes based on the time in the game world.

Example 2: I've always wanted NPCs that would only show up during the day, or night time, respectively. It would also be neat that some NPCs would 'go to bed' at certain times of the day, and return back to their houses.

Example 3: I've always thought boat NPCs should have 'routes' meaning, they would offer to take you to certain places, based on the time of day it is. (tibia time, or real world time)


  • NPCs pushing you, and objects out of their way: A configurable trait, that allows NPCs to interact with the world around them, and to prevent them from getting trapped by pianos, or just players standing in the way.
Example: A watchman NPC en route should be able to push players and objects out of his way, while Granny Jojo can't push anything out of the way because she is so old. But she could also say something when she is 'blocked' to kinda motivate the players to get out of the way, and to create effect.





I have more ideas, I just have to go at the moment, will post back later
 
Are you saying none of those are good ideas? lol
How about you list some good ideas.
 
  • Attackable NPCSs: You can attack NPCs, and they will attack you back. They could also 'aggro' on to you based on conversation pieces. They would respawn at their map placement after a time, if they die.
Example uses: What can I say, it's one of the only interesting features in the Elder Scrolls game series. Just being able to attack NPCs, and loot their corpses creates so much more immersion and interaction in the game world.

Example 2: I've always wanted NPC dialog to be a bit more involved, so being able to 'offend' an NPC, or just pick the wrong response option, and have the NPC actually attack you back for it, would be great for effect, and cut down a bit on 'fishing for responses' when talking to an NPC.

You mentioned to me about alignment.. Killing an NPC could give you a more negative alignment :p
 
This might be a stretch but some monsters or humans will be able to kill other monsters, level up, carry their own loot, etc.. The rest of my ideas have already been said but ill keep thinking.
 
Okay, back home, and now I can type out more.

I will be covering ideas that aren't just about NPCs, but the server as a whole and functionality.

  • Parameters for spells: This is a simple addition, but it is one I think a lot of people would like. This way we could make spells have named targets, or whatever really. It will also help move exiva ", utevo res " and a few other spells out of the source, and into lua.
Example 1: We could make utevo lux, into utevo lux "colour name, so you could cast light of whatever colour you wanted. This can already be done with talkactions, but it would be more optimized if it was just done with spells instead.

  • More requirements to cast spells: To help make skills more involved with spell casting, we could include using the skills as a requirement to cast a spell. I am referring to your axe, club, distance, sword, shielding level. We could also have a 'melee' requirement, that reads for any melee skill. Furthermore, we could include health costs, health percent costs, and mana percent costs, and soul percent costs.
The suppose additions to the .xml would be the following:
axelvl=
clublvl=
distancelvl=
health=
healthPercent=
manaPercent=
shieldinglvl=
soulPercent=

Example 1: Say you wanted to have exori require to have a melee skill of 50 or more. This is how you'd write it in the xml.

Code:
    <instant name="Berserk" words="exori" lvl="20" melee="50" mana="100" prem="0" needweapon="1" exhaustion="2000" groups="1,2000" needlearn="1" event="script" value="attack/berserk.lua"/>

  • More reagent parameters for casting spells: For people that don't know what reagents are, they are items required to cast a spell. These are mostly used for making runes, but you could take it to the next level. All I am asking for here is addition reagent requirements support. instead of just reagentId= in the spells.xml we would have reagentId1=, amountreagentId1=, reagentId2=, amountreagentId2, and so on.

  • Ritual spells: These would be spells that take more than one person to cast, and would utilize the party system for grabbing other people to help you cast it.
 
Last edited:
*Passive monsters, attack only if attacked
*Passive Mob, if you attack one monster in a passive mob all monsters will attack you back
*Monster level, monsters respaw with random minlvl and maxlvl becoming more powerfull. +hp +attack +spellchance +lootchance

^^
 
Some more idea's:
Add and change item stats ingame: This means you can change the stats on an item on the fly, so a monster dies and a sword drops it then has a chance to have +0-3 sword fighting or whatever all done through lua.
Creatureevents registering to creatures: Make it easier to register creatureevents to creatures, currently you have to do it creature for creature and while sometimes this may be useful, other times it really is not for example when you want to register it for all creatures.
Shared lua states: Shared lua states are a Must have, it opens up so much to scripting in lua. Currently in tfs you can create a global variable named Abc in the folder 'Actions' and set it to 5 and if you want to retrieve it in the folder 'Spells' the variable will not even exist as it only exists globaly in the folder 'Actions'.
Creature AI: Will there be some way to more easily script creature AI then there is currently?

Also a question about the aggro, is it simply a number value you can add and substract to?

It's been a while since I've been in OT so if any of these already exist in the current tfs I'm sorry.
 
Last edited:
Here are some more ideas for what could be done with the source.

  • Customizing house names: Players that own a house or a guild hall should be able to rename their home to whatever they want it to be called.
Example: A player doesn't like the default name of a house, and wants to call it 'house of illusions' or whatever.

  • Extra push functionality: The ability to push monsters/npcs/players up and down stairs, or down a hole. This would allow for even greater monster luring, and making pvp more interesting.

  • Monsters REALLY walking back to their spawns: I am aware there is already an option in the config that does something similar to this, but it just teleports the monster back to it's spawn point. It would be better if the monster actually walked back, rather then teleported. Furthermore, this should be configurable to each monsters individually, not just en masse.

Example: There can be really strong guard monsters blocking off an area, and it could be the job of a player to 'lure' the monster away. Having the monster have to 'walk back' to it's starting point after it loses a target allows for more in-depth gameplay, and the chance for players unaware of whats going on, to run into the monster on it's trip back to it's guard point.


  • More options for vocations.xml: There are a few missing choices in vocations.xml, that could really help customize vocations a bit better. The following are a few more customization I can think of, if anyone else can think of more, feel free to list them.
corpse="ID", femaleCorpse="ID", maleCorpse="ID" : allows for you to pick the corpse you wish the vocation to have
gainSpeed="x": allows you to configure how much speed a player gains on leveling up.
maxSummons: allows to set the amount of summons by vocation (already made by ArkSeyonet)
elementalResistances/Weakness: allowing to set % of default weaknesses or resistance a vocation has to an element, similar to the monsters.xml elemental resistances/weaknesses.
Immunities: Allowing to set a vocation to be immune to certain elements, or status effects.
ReflectElement: Ability to reflect elemental damage back to it's owner as a default trait of a vocation.
Pushable="x": Maybe someone wants to make a vocation of being a rock, and thus it's bonus is not being pushable.
tileSpeedBonus=x;x;x; : Ability to allow certain vocations to move over certain trainers faster than others.
  • Reflect Element for monsters.xml: An extension of elemental resistances and weaknesses, this would make it so a master would return damage back to you if you try to use a certain element on it.
Example: You attempt to cast an ice missile on an Ice elemental, and instead of hurting it, the ice missile is reflected back at you!

  • Flag to avoid, or walk over damaging fields: Another extension for monsters.xml, allowing, or disallowing monsters to walk over fields, such as fire fields, or electric fields. The options here should allow you to config avoiding all fields, walking over all fields, or listing only specific fields.
Example: A fire elemental should be able to walk over fire fields, but would still avoid electric fields.

  • Terrian Speed Boost: Certain monsters are more accustomed to specific terrian types, and should get movement speed bonus'es accordingly.
Example: Quaras should move faster underwater by tile. Same with a bug running through the grass, it is faster, but when it hits pavement or dirt, it should ''slow down' (go to default speed).

  • Theifing: Monsters (and possibly npcs) should have a list of items, with chances (to steal), and count mins and maxes that a player could steal from them. Stealing would be a new type of skill/spell, and being able to list a monsters steal loot list simply in the example would allow for easier customization.

  • Moving Guild Making to luafunctions/out of the source: Simply put, this is asking for functions to allow players to make guildmaster npcs and etc.

  • Mounts movement speed based on terrian: In addition to a overall speed boost, mounts should give you a speed boost depending on the specific terrain you are standing on... This is how I hoped cipsoft would do mounts when they were first announced, and I was disappointed.
Example 1: The lady bug mount should move faster through the grass, while the Manta should go faster under water, and the Dromedary goes faster when on sand.
  • Configuration of already existing functions: This isn't about adding more features, but rather easily being able to customize features to your liking in the config.lua. The following are just suggestions for configurations, if I missed some, please post more suggestions!
ShowPlayerLevel="x": Turn off or on the ability for players to look at other players and see their level
ShowPlayerGuild="x": Turn off or on the ability for players to look at other players and see what guild they are in
ReleaseSummon="x"/ReleaseSummonOnDeath="x"/ReleaseSummonOnLogout="x": On old Tibia, when a player logged out or died while having summons, the summons would turn into wild monsters, this is simply an option to add back in an old feature.
SummonsHaveCorpse="x": Does the summon drop a corpse when it dies, or should it just poof?
 
Some more idea's:
Add and change item stats ingame: This means you can change the stats on an item on the fly, so a monster dies and a sword drops it then has a chance to have +0-3 sword fighting or whatever all done through lua.
Creatureevents registering to creatures: Make it easier to register creatureevents to creatures, currently you have to do it creature for creature and while sometimes this may be useful, other times it really is not for example when you want to register it for all creatures.
Shared lua states: Shared lua states are a Must have, it opens up so much to scripting in lua. Currently in tfs you can create a global variable named Abc in the folder 'Actions' and set it to 5 and if you want to retrieve it in the folder 'Spells' the variable will not even exist as it only exists globaly in the folder 'Actions'.
Creature AI: Will there be some way to more easily script creature AI then there is currently?

Also a question about the aggro, is it simply a number value you can add and substract to?

It's been a while since I've been in OT so if any of these already exist in the current tfs I'm sorry.

You can already add and change just about anything with an Item with LUA, but it would be interesting to be able to make Min-Max loot drops in creature loot.

I will make a onCreatureSpawn(cid) creature event that is live for ALL creatures where you can register any other events you want all creatures to have.

As for Shared LUA States, I have actually never come across a problem with this, can you explain a situation where you would create a value, that isn't assigned to anything, and it would need to be pulled by other scripts? Basically all scripts do one of 2 things. Either effect a creature, or effect an item. and both creatures and items can have infinite values assigned to them that can be accessed by all other scripts, and even if you needed a variable that isn't assigned to either a creature or item, you have infinite global values you can set in the form of "global storage values"

As for creature AI, I have listed tons of ways to customize how creatures act (which is the definition of AI). Is there anything that you would want to be able to do with creatures that I haven't listed?
 
Non-global day/night system. Timezone like approach could be troublesome for management though, so I'd like best to just simply select area(x->x1,y->y1,z->z1) and set
-time of day length.
-color of time of day(so that I may set purple sunrise).
-basic delay from main location so that I am able to make time zones bit easier. Not necessary needed though.
Why I request z in area? I would love to make higher parts of for example mountains having still daylight while, valleys are covered in night.

I hope it is not too cumbersome.
 
It's possible,
Non-global day/night system. Timezone like approach could be troublesome for management though, so I'd like best to just simply select area(x->x1,y->y1,z->z1) and set
-time of day length.
-color of time of day(so that I may set purple sunrise).
-basic delay from main location so that I am able to make time zones bit easier. Not necessary needed though.
Why I request z in area? I would love to make higher parts of for example mountains having still daylight while, valleys are covered in night.

I hope it is not too cumbersome.

It's possible, i'll make sure you will be able to do this in LUA with new functions.
 
You can already add and change just about anything with an Item with LUA, but it would be interesting to be able to make Min-Max loot drops in creature loot.
Aaah did not know you could, that must be new, like I said been a while since I've been around. The Min-Max would be awesome to have in loot.

I will make a onCreatureSpawn(cid) creature event that is live for ALL creatures where you can register any other events you want all creatures to have.
Nais:)

As for Shared LUA States, I have actually never come across a problem with this, can you explain a situation where you would create a value, that isn't assigned to anything, and it would need to be pulled by other scripts? Basically all scripts do one of 2 things. Either effect a creature, or effect an item. and both creatures and items can have infinite values assigned to them that can be accessed by all other scripts, and even if you needed a variable that isn't assigned to either a creature or item, you have infinite global values you can set in the form of "global storage values"
Yes you can assign data to creatures with storage values, though that is only 1 value, if you have a giant table, you can ofc safe all those values to storage values and get them back though that is really time consuming and annoying to do. If the table is actually global you can access it everywhere making it easier and less time consuming to code.

As for creature AI, I have listed tons of ways to customize how creatures act (which is the definition of AI). Is there anything that you would want to be able to do with creatures that I haven't listed?
If I read correctly it should be possible to do what I imagined.
 
Back
Top