• 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!

Whi World - Open Source Server with Configurable Features

Ok this post from yesterday is totally useless xD
I must lock my computer when i'm drunk .....

Anyway. I'm about half way done with the monster AI and spellCreating system.
Nothing yet is completely ready, all my main functions area uncleaned and expecting some features yet to come.
I go trough that spell by spell and whenever creature behavior should change because of spell I will have easier time to implement it if I don't "finalize" my functions.

This is not complete yet, but looks quite alright imo. currently I have been able to config the cyclops spells.
I will now make the spells more awesome looking too visually.
Today I start making Big Daddy spells.
Code:
--[[ spellCreating config guide
    firstCastCD = INT or 1000            how many milliseconds has to wait before can cast the first spell
    cooldown = INT or 1000                 time in milliseconds
    locked = BOOL                        if true then this spell cant be casted until something else unlocks it
    changeTarget = BOOL,                Caster searches new target after spell activation
   
    targetConfig = {                    generates targetList with configurations
        -- objects
        itemID                             adds itemID to targetList (used in environmental changes)
        "caster"                         adds spell caster to targetList
        "enemy"                            adds players around caster to targetList
        "friend"                        adds monsters around caster to targetList
        "target"                        adds previous target to targetList
        "cTarget"                        adds current caster target to targetList
       
        [objects] = {                    config to each object. | if not table used then creates it with default values
                                        object can also be objectTable EX: [{INT, INT, "caster"}] = {config}
                                        if value is not table then table is automatically generated with default values
            range = INT    or 10            if object too far then its not added to targetList
            requiredID = INT or INT        every object with this ID will be counted towards this ID requirement | default numbere starts with 1 and adds 1 for each unique object
            getPath = BOOL                if getPath() then target added to targetList
            obstacles = {STR}            list of getPath obstacles
                                        "noTile"    - if Tile(pos)
                                        "noGround"  - if not tile:getGround()
                                        "solid"     - if tile:hasProperty(CONST_PROP_BLOCKSOLID)
                                        "creature"  - if tile:getTopCreaure()
                                        "blockThrow"- if tile:hasProperty(CONST_PROP_BLOCKPROJECTILE)
                                        itemID      - if findItem(itemID, pos)
            usePosTConfig = BOOL        -- instead should simply use position configuration here too
        }
       
       
        requiredT = {                    how many objects need to be found for each requirement | missing table default = amount of 1 for each required ID
            [requiredID] = INT            INT amount of objects needs to be found
        }
    }
   
    position = {
        endPosT = {                        generates all the end positions, when missing then uses startPositons
            startPoint = startPosT        hardcoded !NB can only use endPoint for endPosT
        }
        startPosT = {                    generates all the start positions (same configs apply to both)
            range = INT or 10            compares startPoint with endPoint
           
            startPoint = {                 objects are read in order.
                "caster"                caster:getPosition()
                "enemy"                    caster:getEnemies() - and takes each position
                "friend"                monster:getFriendList() - and takes each position
                "cTarget"                current caster target position
                itemID                    finds this item position near caster
                "endPos"                previous endPositions
                "startPos"                previous startPositions
            },
            endPoint = {}                same config as startPoint
           
            singlePosPoint = BOOL        if true then first position what passes all parameters is taken (used in getPointPosT)
           
            pointPosFunc = STR            _G[STR](posConfT, startPointPosT, endPointPosT) -- rewrites default createPosPointT function
                                        "pointPosFunc_far" - from given positions, finds pos which is furthest away from STARTPOINT (getPath goes as far as 7)
                                        "pointPosFunc_near" - from given positions, finds pos which is closest to STARTPOINT
           
            areaConfig = {                compares STARTPOSITIONS and ENDPOSITIONS STARTPOINT
                area = areaT            single area from areas table
                relativeArea = areaT    secondary area table for relative directions (if not used then randomly casts either to x axis or y axis)
            },
           
            getPath = {
                stopOnPath = {STR},        objects are read in order.
                                        "solid" - stops before solid tile
                                        "enemy" - stops before enemy
                                        "friend" - stops before friend
                                        itemID - stops before item
                                       
                obstacles = {STRING}    "solid" - goes around solid objects
                                        "enemy" - goes around enemies
                                        "friend" - goes around friend
                                        itemID - goes around items
            }
           
            posTFunc = STR                _G[STR](caster, targetList, previousTargetList, previousEndPosT, previousStartPosT)
           
            blockObjects = {STRING/INT}    removes some postions from startPosT - clearPositions()
                                        "solid"     - CONST_PROP_IMMOVABLEBLOCKSOLID
                                        "caster"     - removes position when there is caster
                                        "enemy"     - removes position when there exist enemy userdata
                                        "friend"     - removes position when there exist friend userdata
                                        itemID         - removes position when there exist itemType(itemID)
                                       
            onlyItemPos = {INT},        ONLY collects positions where are these itemID's
           
            randomPos = INT,            Picks randomly INT amount of positions from final result
            randomPerLayer = BOOL       if true then picks randomPos amount of positions on each layer                           
        }
    }

    -- variables what work on all features
    onTargets = BOOL                    if true then instead of using created positions it directly does something to targetlist cid(in case of items uses targetList position)
    delay = INT                         ms time before feature is activated
    hook = BOOL                         if true then executes this feature if hook was true | only checked onrecast
   
    -- above variables work on features: damage, changeEnvironment
    recastPerPos = BOOL                    if true then recasts this table for each position (doesnt recast on repeats)
   
    stunOnHook = BOOL                     if true then only stuns when feature hook is true
    stunDuration = INT                    time in milliseconds (stuns position)
    stunL = INT    or 0                    level of stun
   
    -- features
    damage = {                            hooks activate onHit
        interval = INT or 0                milliseconds betweeen area index positions (if not onTargets)
        cid = INT or cid                cid = caster:getId()
        origin = INT or 14                14 = O_monster_spells               
        minDam = INT                    minimum damage
        maxDam = INT or minDam          maximum damage
        formulaFunc = STR               returns minDam and maxDam _G[STR](caster, pos)
        minScale = INT                  extra damage scalingSystemValue * INT
        maxScale = INT             
        damType = ENUM,                 combat damage Type
        distanceEffect = ENUM            animation effect from startPositions to end positions
        effect = ENUM,                  animation effect on the position
        effectOnHit = ENUM,             animation effect when player gets hit
        effectOnMiss = ENUM,            animation effect when nobody gets hit, used if not DIRECT DAMAGE
        repeatAmount = INT                  Repeats same damage INT amount of times.
    },
   
    changeEnvironment = {                hooks activate on item remove
        items = {INT},                  list of items what are created to positions
        randomised = BOOL,               if true then only one of the items is created to positions
        removeItems = {INT},               List of items what are removed from position if they exist there
        removeTime = INT,                ms time created item is removed
        spawnTime = INT,                ms time when removed item spawns back
        itemDelay = INT,                   ms time between creating the items
        blockObjects = {STRING/INT}        removes some postions from startPosT - clearPositions()
                                        "solid"     - CONST_PROP_IMMOVABLEBLOCKSOLID
                                        "caster"     - removes position when there is caster
                                        "enemy"     - removes position when there exist enemy userdata
                                        "friend"     - removes position when there exist friend userdata
                                        itemID         - removes position when there exist itemType(itemID)
        customFunc = STR                _G[STR](cid, itemID, pos, currentItemRemoved, featureT, targetList, endPosT, startPosT, previousTargetList, previousEndPosT, previousStartPosT)
        orderChanger = {    -- not yet created
            S = 1,                         Takes item index+1 from items table when using South Area
            E = -3,                      Takes item index-3 from items table when using East Area
        },
    },
   
    say = {                                if targets not used then ORANGE text comes to pos
        msg = {STR} or {[delay] = STR}    if not delay used then delay is automatically generated with addMsgDelayToMsgT()
        msgType = INT or YELLOW            type of msg (if targets used)
    }
   
    spellLock = {
        lockSpells = {STR}                list of spells what cant be used anymore (spell still needs to be registered to monster)
        unlockSpells = {STR}            list of spells what can be used (spell still needs to be registered to monster)
    },
    spellLockCD = {
        [INT] = {STR}                    INT = cooldown what is added
                                        STR = spellName
    },
   
    event = {
        duration = INT                    sec time before registered event is removed
        registerEvents = {STR}
        unregisterEvents = {STR}
    }
   
    teleport = {
        effectOnCast = {INT},              Effect before teleporting
        effectOnPos = {INT},               Effect after teleport
        effectInterval = INT,            ms time between the effects on position
        walkSpeed = INT,                temporar monster speed for teleporting
    }
   
    magicEffect = {
        effect = {INT},                  effect type what will appear in position
        effectInterval = INT,             ms time between the effects on position
    }
   
    flyingEffect = {
        effect = INT,                      Animation effect
    }
]]
 
Has been complicated week.
Most of the time is spent on Pokemon Go (some of my friends wont give up until I come out to catch them all..)
And 2 days were spent on making scripts for other servers.
No idea how will the weekend turn out, but I most likely won't be scripting.

However yesterday I did spend few hours tweaking big daddy spells and right now I just finished it.
Above I will bring out the list of monsters what exist in Whi World. If all the monsters ready, then patch will come out.

Whi World monsters: Completed, Not Completed, next
Deer
Bear
Boar
Wolf
Rabbit
White Deer
Cyclops
Big Daddy
Archanos
Shadow
Borthonos
Bandit Knight
Bandit Druid
Bandit Hunter
Bandit Mage
Bandit Shaman
Bandit Rogue
Bandit Sorcerer
Skeleton
Ghoul
Skeleton Warrior
Ghost
Dummy
Cursed Bear
 
Last edited:
Oki
New week has started.
I will finish monster spells this week.

Today while testing spells i felt few like some lag.
Idk what was it, too hazed to remember now.
I hope I didn't mess up xD
last spellCreating system had more possibilities to skip huge functions. But this time it always calculates start and end pos and targetlist even it spell itself doesn't require any.

most spells look more fancy now :p
I think Archanos got harder and Big Daddy got easier. event though I didn't modify spells themselves.

I'm too tired, going sleep.
 
White deer charge spell what stuns is back :eek:
Looking forward to see server crashing again if I still couldn't figure out how to make it work perfectly xD

Getting closer finishing up the spells.
Deam I'm getting tired of configurating these spells. I like make a spell and test it withing several minutes, but then I take a break for few hours xD
I just can't bring myself make them all at once. Idk why I feel so unmotivated. creating the AI itself was more interesting.
 
!! got level 20 yesterday in pokemon go. played the game from 9AM to 1 AM xD

Just woke up.
>.>
<.<
Nobody around.
Going to make some spells now >.<
 
Well last week I was home only few days. Did not expect that.
I did few spells this morning, later today today I will do few more.
Also server running now xD (didn't know it was offline, cable was unplugged >.>)
 
Today I will finish the spells of monsters.
Then I start cleaning up the old monsterAI and spellCreating system from data folder.
After that I fix some bugs what have been found from live server.

If all that done, I update live server. Next post will probably be patch notes
 
Whi World PATCH 0.1.5.7.7 - spellCreating system and monster AI

Another time taking rework has been made. This patch brings out the new monster AI and differently configured spells.
Some spells now look better and look less buggish.
Since I rewrote over 80 monsters spells, you can expect to see some balance shifts.

I created a new poll, to ask community what you want me to do next. More details on this post:
>Takes it to my forum post<

Monsters:
All monsters got changed.. so yeah, too many changes to write xD
Squirrel:
Physical resistance reduced by 100%. Melee should be able to get rid of them faster now.

Other:
clearly not a bag:
Fixed bug where few of tutorial bags could not be equipped.
More free loot!: As you know random items spawn into containers in Whi World, but it never allowed to spawn more than 1 item per container. I now removed the restriction. Some items can have more loot now :D
Website: Added recent 10 players panel, to easily see the latest chars who has been online. Mostly useful for me xD. Not yet sure why activity chart creates double fields though.
Why you stun me?: We all know, stun doesnt allow you to move, but now on, you can't cast spells either while stunned.
I removed the stunlevel attribute. Instead you have to stack stun resistance over 100% to be able to be immune to weak stuns. Every 100% means 1 stun level.
 
Last edited:
Whi World PATCH 0.1.5.7.8 - game improvements and fixes

I'm actually quite amazed how it all worked out. No crashes or lags so far what used to be there.
Some unfixable combat bugs are now also gone.
Sure there some new AI errors (which I hopefully fixed now), but I still consider last update successful.

One thing what I totally messed up was dealDamage function, lot of damage dealing spells no longer show effects(excluding monster spells). It will take some time to get it all look like before, as we have to see "how something is missing here" xD

Monsters:
Forest monsters:
Increased the food drop chances by a little. We go there to farm food quite often. Lets reduce the grind time and increase the actual explore time.

White deer: no longer stuns himself and removed 1 white deer spawn from forest.

Cyclops: increased the stun duration from 4 sec to 5 sec

Spells:
player damage spells:
Added back the visual effect of spell when you cast a spell.
volley: Arrows deal damage now................. ..

Other:
Stun:
while stunned, you no longer can't attack with weapons. Lets make this CC matter!

Broken token bags: Fixed bug where quests and missions still rewarded old token bags. (old token bags can't be turned to normal bag)

save memory!: Optimized some table handling (basically just removing tables when monster gets killed or player logs out xD)

oh my wut iz diz: Made some secrets more noticeable (not rly)

NPC's:
Task Master:
Fixed the task master killing tasks what you could repeat. the tasks was generated based on each monster there is in game, but the central system now adds the monsters to game on startUp and this task generating happened before it. This is why I need to update all the features to central system too xD.

Quests:
Cursed Bear:
fixed the light effects

Stats:
Stun resistance:
Now works
Slow Level: removed attribute (didn't use this stat in game but it was suppose reduce the length of slow) if i ever need one i put it back in.

Tasks:
Fixed the torn book in forest and scroll in big daddy boss room which were needed for tonka herb tasks.
Also if you skip the tutorial and forgot about antidote recipe, it will teach again when you bring him the main ingredient.
 
Where I'm at with Whi World.
Increasing game creating performance
Last 2 months Whi World has barely gotten anything new to offer. It has stayed the same, but not quite.
The last time consuming things I did were: Creating a Central System and recreating Spellcreating System and Monster AI.
All the above simply changed the way codes interact with eachother behind the scenes. Game itself plays and looks the same.

Thanks to these implementations, I can create new content way faster than before.
It will feel good to dump quality content faster than casual payer can play trough that.
Going to put that theory in test in near future when I start creating Mummy room.

Actually creating new things were never the problem. The most time is spent fixing bugs or improving the features/content.
As you can see almost every server in OTLand spends days, weeks or even months to fix some bugs. This doesn't exclude me, o yea I know all about them bugs. There are over thousands of hours spent on creating unorganized code and every now and then I gotta add some escape values or refactor a function.
However with the Central System my codes can now keep up with the new changes or at least lets me know on server startUp that some functions might conflict with the new ones I just created.

Not all bugs are the same.
When you get and error to console, its a bug, but usually its easy to fix. Unless some parameter were converted down the line and you don't know exactly where.
In the worst case it may take hours to find the cause for it and then write a line of code in few seconds to fix the problem.
In my case, central system will do the tracking for me and I don't remember a single issue what took me more than 1 hour to fix. It's usually matter of minutes.

The worst enemy is a bug with no errors what so ever, you know something was suppose to happen, but it didn't even give a clue why did it not happen.
TFS is organized by events and actions. I have roughly about 2000 different actions. Now one of them doesn't do what its supposed to do.
Sure we have filters like, does script work on monsters or players, is any item involved, any other unique sign what will point to the faulty script.
But overall this thing only scaled bigger and bigger and finding those kinds of bugs took more and more time.
When you finally found the script what had something to do with the bug, you had to figure out the exact location where it goes wrong (see paragraph above)
As you can see, this is pretty bullshit and bugs like these almost always took hours to fix.
The central system is actually a automatic script organizer. Its a huge configuration table what registers/generates scripts on startup.
When I get bug what has no error and is part of central system, I can use practically any other object I see on my screen when bug happened to track the issue down.
Not only that, all the related scripts are on one file instead of scattered around the data folder, so when I spend that few minutes tracking bug, I will see all the other relates scripts too, saving me time to find the exact cause of problem step by step.

The most annoying bug is a bug that you don't even know exists.
This doesn't happen too often and you can stumble upon these issues when you finally decide to add it to game and realize "o wow, I already have it, but it didn't work this way".
Or when you do lot of reworking or refactoring like me.
Since central system has all the relates scripts on same configuration file, whenever I add something new, I always get a glance over older scripts and configurations.
This was not something what happened before. + some scripts do say "Uhm, you have a registered a script, but nothing happened"

Sure I'm speaking here about mere hours, but not everyone spends ~4h per day on a server.
Some ppl have only 4h per week to spend on their OT. Hence the reason something simple takes weeks to fix for some.

Gotta Improve it more!
So I have praised my central system quite a lot by now :D
But for a reason, it has made everything better and faster I do about my game.
Yet still not every code runs trough it. I haven't organized any of the features yet. (features are: food, skilltree, combat, stats, items, upgrades, minigames, etc)
Eventually I should do that too and when its done. Then Whi World content creating engine is practically ready.​

Planning to expand the existence of my game.

At some point I will make a video "What is Whi World?", I have mentioned about that video before, but so far kept pushing the date further.
This video will talk about briefly about the gameplay and about things, what this game has that any other game in the world doesn't have.

When video is ready, It will help me to reach out to more forums, groups and platforms to show the world that I exist and I do something new.
At that time I also start using social media to show the idea of my game.
Because as you can see, upcoming things for Whi World are features and new content.
These are good things to demo.​
 
Whi World PATCH 0.1.5.7.9 - game improvements and fixes + equipment token feature
Today when I did scripting I looked clock, how much time some certain things took. Not going to keep track of it again, just today wanted to see how long something takes.
I will write them down like this: [x min]

Monsters:
monster Slow:
As you know some monsters slow player. In sources I have line what goes something like this "if player speed goes less than 50 then set player speed 50". But sometimes it does not work.
I now created a lua check also what does same thing. Calculates the player final speed if creature uses slowing condition on player and makes sure the final speed doesn't go below 50.
Hopefully this will be enough. If not the bug what causes player to walk from tile to tile quite long time is way too crucial and I'd have to remove "slow" spells from monsters until some kind of other fix is found for it. [17 min]

bandit rogue:
reduced back-stab damage (the jump attack what kills newbs like me) [5 min]

ghost: improved AI, to understand what are safeZones!! Ghost no longer spam spells when you in safe zone. [45 min]

Spells:
trap:
the damage formula now can be seen fully in spellbook. [2 min]
trap: trap cooldown is now reduced with distance skill [12 min]
spark, death, mend: Spellbook now shows correct cooldown when spell is improved. [20 min]
taunt: now taunt spell shoots a knife what taunts a target and its much easier to understand how it works. (instead of buffing char and then taunting on weapon hit) [26 min]
volley: new manacost is 40 (before 10)
volley: when using volley, projectile break chance is increased 10% for the projectiles used for the spell. [10 min]
volley: cooldown increased to 7 sec from 5 sec.
volley: now works with "the nami boots" [30 min]

Other:
Wait a sec:
Trough spawn system I can now add monster respawn delay. White Deers spawned back too often right after they were killed.

What is this door?: Fixed bug where some doors had level requirement when you looked at it.

Wood!: The "giant tree" branch what is in the way in the shortcut area has now correct name and by looking at it you will see how to get rid of it. [8 min]

deadZone: Fixed bug where South Bandit Mountain Area was not loaded on startUp [3 min]

more gold plz: Fixed bug where hidden gold did not respawn in forgotten village [14 min]

NPC's:
Priest:
Fixed all priest missions. [8 min]

Quests:
Cursed Bear:
No longer spams too many light effects.

Missions:
fur backpack mission:
You now need 2 less bear paws and 3 less wolf paws for the backpack. [3 min]

Items:
Spear:
fixed the range (couldn't shoot with it)
traptrix coat: Now gives 2 shielding skills and takes 2 distance skills (before gave 3 distance skills) [3 min]
the nami boots:
Increased slow resistance to 20% (before 5%) and added 40% stun resistance [1 min]
blessed hood: now stacks up to 10% (before 20%), but lasts 6 sec (before 3 sec) [2 min]
iron helmet:
Now the stacks last 5 sec (before 4 sec) [1 min]

Equipment tokens: [4 hours 14 min]

New feature where you can destroy your useless items into tokens. And then use those tokens to improve your best items even further.
143gi6c.jpg
dwv0bl.jpg
2i89kxg.jpg
 
Whi World PATCH 0.1.5.7.9 - hotfixes

Monsters:
Improved monster AI:
which is nerf for monsters. They no longer shoot targets trough walls.
In rooted catacombs:
Increased stone upgrade drop chances.


Spells:
spell cooldowns work properly now
Climb down:
Fixed bug where climb down allowed to let player in places where they should not be able to get.
volley: nami boots synergy nerfed, now only deals path dmg only with arrows what reach the furthest. (about 45% damage nerf)


Other:
Token fest!:
reduced the amount of tokens required to upgrade item to 3 instead of 4.
where is my TP!: fixed Hehemi hardcore room teleport pillar. You can now get teleport charge from it again.
chasing your own shadow: Shadow room is fixed, you no longer need vial of water (which is food) to wake up the shadow boss.

Tools:
Iron Hammer:
fixed bug where gems could not be taken out from items when item was equipped or in the container.


Items:
Snaipa Helmet:
now increases 30% volley dmg instead of 80%
 
didn't have time to script Whi World after last patch, but today I finished the Mummy Room puzzle and quest.
Monday I will start making the mummy spells and items.
If those done, then new content is ready :D
 
1 final touch left to be made to push out next patch. Create 8 new equipment items.

ITEM: Throwaxe bounces 2 more times
ITEM: ice damage from spells freeze(slow) the target
ITEM: barrier explosion deals 100% of total barrier as death damage to surrounding creatures. 1% damage dealt will be added to your next death spell damage.
ITEM: heal sLd*5 + mL*2 hp per second while faking death

EDIT: bare witness of new wombo-combo items

increase barrier explosion area
each melee weapon hit increases you resistance of same type as your weapon deals. buff lasts 3 sec and stacks up to 5%
resisted death damage is added to your barrier.
healing spells remove root and bind effects

keep in mind some items can be changed.
 
Last edited:
patch is rdy, going update tomorrow.
Hopefully damageSystem wont bug out next patch. Lot of changes has been made to support item like this: each melee weapon hit increases you resistance of same type as your weapon deals. buff lasts 3 sec and stacks up to 5%
 
Whi World PATCH 0.1.5.8

Monsters:
Mummy:
New monster in Rooted Catacombs

Missions:
mummy mission:
New item collecting mission

Tasks:
Mummy task:
new mummy killing task

Quests:
MummyBless:
Now you can get the last bless required to enter final boss room

Items:
ghatitk legs:
each melee weapon hit increases you resistance of same type as your weapon deals. buff lasts 3 sec and stacks up to 5%
shimasu legs: resisted death damage is added to your barrier
kamikaze short pants: increase barrier explosion area
frizen kilt: ice damage slows targets by 20% of their speed
goddess armor: healing spells remove root and bind effects
bloody shirt: faking death regenerates health
leather vest: throwaxe spell bounces extra 2 more times to different target, part of leather set
kamikaze mantle: barrier explosion deals 100% of total barrier as death damage to surrounding creatures, 1% damage dealt is added to your next death spell damage
 
GOTO TO MAIN POST
First post is updated.

Whi World server will be closed monday.
It can stay that way up to 4 months.

This is your chance to test current version and see the new mummy room.

Where I'm going?
I'm going Sweden to work for some moneyz. Almost all of the earned money will placed under Whi World project.
This means it is actually good thing for project.

On my free time I still will do some scripting.
Next up I'm going to rework npc's (in other words replace npc's with monsters and create a new npc AI)
 
GOTO TO MAIN POST
First post is updated.

Whi World server will be closed monday.
It can stay that way up to 4 months.

This is your chance to test current version and see the new mummy room.

Where I'm going?
I'm going Sweden to work for some moneyz. Almost all of the earned money will placed under Whi World project.
This means it is actually good thing for project.

On my free time I still will do some scripting.
Next up I'm going to rework npc's (in other words replace npc's with monsters and create a new npc AI)
Sad life :(

My opportunity got canceled yesterday night :/

Oh well.. Since I don't have any other plans I will keep updating server.
 
I have been working tightly on the new NPC system.
This thang is more complicated then I though it will because monster creatures have their own problems in TFS.
Although slowly I'm getting things "theoretically" work. Still haven't gotten to testing yet, because I cant even start my server yet with all those functions unfinished xD

When I do get the game test server working again I will do some tests and when they passed, I will update live server with new NPC's.
However they wont yet attack or take damage. I will work on that feature after the first npc patch.

What changes will npc have?

The npc's will roam around even more freely, they no longer will get stuck because they are out of the "homePos radius".
Visual chat is improved. They can now also start the conversation.
"Chatting" with npc's can also be done in actions like "you handing the letter to npc" > "npc took letter and glanced over it". (kinda like narrative text). Before there was only you said: "", npc said: ""
Configurating npc is easier (server creating stuff)
Performance increased and code looks better.
Npc's will follow monsters/players more smoothly

Later npc's will be able to attack cast spells. (this also means they can start opening doors/closing them, picking up items, throwing items on ground, in other words do everything what GOD's could do)
Later it will be possible to attack npc's.

Website?

Started looking into website creating again, because I seem to have found some help. Time will tell if it will work out.

Custom Client?

Maybe something might happen here too. Lets give it some time here too.
 
Today I was finally able to start test server! wooo
I tried to talk to npc but it gave error. meh xD not too worried though. Gona finish all npc related scripts first before I start fixing errors.
Few things yet left to do:
new npc shop
rework tutorial npc. - it has its own AI, gotta make the new npc AI good enough to understand the tutorial configuration
rework quest/mission npc's - every quest npc has its own AI.. once again gotta update them so that one npc AI can do everything.

I have updated npc's a lot (this is my 5th npc system) along with handful of extra features what I have been adding to npc's over the time.
Converting it all in 1 compact system is really needed!

Will try to get some free time this weekend to do more of these npc scripts.
 
Back
Top