Giter Club home page Giter Club logo

srvmgr's People

Contributors

igroglaz avatar jewalky avatar kobik-ag avatar serg-bloim avatar sunrei avatar warbeginner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

srvmgr's Issues

slow spell bug (monster hitbox)

HOEBAC:
Spell: Slow - Using this spell on a 2x2 sized monster (Troll and Ogre) will cause in their hitbox bugging out. By this I mean the monster model is not where the screen shows you. The monster might be actually closer or further away from you than one might think. How this affects players: You might see the (example troll) being 3 squares/hexes away from you, but it stil can reach you. This is because the monster model is not actually 3 squares/hexes away from you, but already next to you. I'm not sure if this visual bug relating to this spell is fixable.

EDIT I believe this is/might be part of the hard-coded stuff which one is not able to modify?

How to reproduce: Cast spell: Slow on 2x2 sized target, inspect the movement and you'll be able to see the delayed visual model (monsters hitting further than 1 attack range)
How it should be: Casting spell: Slow should not affect the monster model
How it actually is: Casting spell: Slow affects the monster model and therefore you are not able to see in which squares / hexes the monster is actually moving in

partial drop flags

there are already flags for drop/no drop.. it would be fun to add new flags - for partial drop, eg when player die, only his inventory would be lost as a bag (but not items worn). Example of possible flags for death drop:

  1. 10% on gold lost
  2. 10% of inventory (scrolls & etc) dropped
  3. one random equiped item dropped
  4. one random item from inventory dropped
  5. all inventory dropped

add server option to disable 'watch

It would be fun to implement new flag for server - to disable 'watch'

"Watch" (F3 -> 'watch') -- other players will be capable of watching your character and all the events within your character’s sight range.

Would make game extra hard.. and more interesting in certain circumstances.

Also I suppose it could solve most of crushes :)

max limit reward for 'mail' in tavern

Right now mail gives 2% of player experience as reward. I suppose if we will be able to change this value somehow it will be good way to rebalance mail system.. but as we have 110 skill limit (and it's possible to get exp even after you got a 110 value), even lesser, eg 0.5% of reward could give stat potion as reward..

So the idea is - to award 2% of exp, but not more than, for example:

  • 1k @ easy maps
  • 10k @ medium maps
  • 50k @ hard maps
  • 100k @ horror maps

It's approximate values; exact ones we could define during tests

item dissapear instead of potion

sometimes (super extremely rare) an item can be 'comsumed' (dissapear) when using a healing potion (or any other consumable items), if this item lies in front of the consumable in inventory

eg today one player had weapon dissapeared that way

limit maximum distance for teleport

Easiest way to solve problem with multiple taverns on map and 'mail' is to add restriction for maximum distance of 'teleport' spell

Teleport max distance with 100 skill should be ~ 10

-1 stat point after death

Add config flag that after player died - he got -1 stat point (couldb e used instead of -exp). Ideally also make player drop stat point, so other players could pick it up.

Also there should be a restricting, that stats can not drop below basic value (starting summ of stat points).

add mage dmg modificator in PvP

to make mage more viable in PvP: to add damage multiplicator for mage's spells which will work only on other players in PvP, but monsters will receive the same damage as it written in data.

ZZYZX said that it's possible to do @ OnDamage:

if (player1 && player2 && !*(uint32_t*)(player1+0x2C) && !*(uint32_t*)(player2+0x2C) &&
    (*(uint8_t*)(unit1+0x4C) & 4))
    damage *= 3;

reassign max stats for 'female' warrior/mage

RoM2 got 4 classes - male warrior, female warrior (amazon), male wizard, female wizard (witch).

But people use only male warrior and wizards cause max stat got more 'body' stat. Current max stats:

Warrior | 52 | 50 | 48 | 46
Amazon | 50 | 52 | 46 | 48
Wizard | 48 | 46 | 52 | 50
Witch | 46 | 48 | 50 | 52

The idea is change amazon/witch max stats to make them compatible to male classes. Eg, if amazon would have max stats:
48 52 52 52 (so amazon would have 99 protection from magic, but much less HP).
it would make it compatible to male warrior; and useful in certain situations (this particular values is just an example, we would have to experiment with them to find right balance).

So task is to add new constants in server config:
amazon_body
amazon_agility
amazon_mind
amazon_spirit

witch_body
witch_agility
witch_mind
witch_spirit

To do so we need to find certain spots in the code which got this constants. It's possible to do it if we would use IDA and drink stat potions near the maximmum value

monster invisibility bug

when you aggravate hero and then use big-range teleport away OR die inside 'darkness' spell and then mob cast invisibility on itself - monster could 50/50 chance to become bug-invisible (won't come out from invisibility). could be fixed only by relogin

show more tavern quests

Make taverns show more quests, because right now players has to cancel quests often to 'move queue' so there will be better quests.

I suppose it's possible to show much more quests in tavern, like in two rows

allow only nicknames in English

as we have international hat - it would be nice to allow character nicknames in English

It's quite low priority.. an explanation - atm foreign players can't write PM to people with cyrillic nicknames

quest radius in taverns

right now quest radius in tavern is 64 tiles (approximately)... it will be fun to make it 240 or even bigger, to it will be possible to get quests all around map

[IMPORTANT] Add server flag: disable ressurection

We are designing new quest map progress: each quest map will have only one item at the end.. It will be like a dungeon which you have to go through to get the prize.. And it's only one prize, free for all.

The problem is that some players will be able to steal the prize right under the nose of people who cleared all the way. In general stealing is alright and there is PvP to prevent it, but the problem is that there is possibility for a players to ressurect again and again, teleporting to in vein to get the prize. Even with exp loss some players might consider to ressurect a lot of times just to get an item (as it takes 2 hours to get from 0 exp to 95 skill).

To prevent such behaivour could be such solution:
add server flag "prevent_ressurection"

if this flag is ON on server configuration -> any player won't have possibility to ressurect upon death (so player has to 'alt+f4' and wait 5 minutes, so hat will release his character and player will be able to contunie playing).

It will give feeling of battle-royale for quest maps... "There can be only one" ;)

Atm I see two ways to implement such design:

  1. after death disable option to ressurect (push 'space').. so it won't work
  2. after death automatically kick player from server and prevent him to login for some time

Cooldown for spells

Add possibility to assign CD (cooldown - period in which spell can not be used after you used it) on spells, eg so it will be possible to assign teleportation CD to 2 seconds.

'Animate dead' spell power adjustment

Spell:

Animate dead (corpse)
Raises zombie, skeleton, or ghost from a unit's corpse

We need to limit max hitpoints of ghosts/skeletons/zombies summoned by player-mage by 'Animate dead' spell..

Because right now mages use ghosts from lvl 5 mobs to use them as unkillable tanks, which is wrong (as we reduce DPS from mobs atm, warriors will be able to tank and should do it instead of ghosts).


Was fixed a bit via reducing lvl 5 mobs HPs

player could attack invisible character

if player teleport far away (radius more then character vision) and use invisibility - his 'clone' stays in his spot. Other players are able to attack this 'clone' so they would track character even in invisibility

auto-restart script

The most ezpz fix for #21 would be to create auto-restarting script. So server would auto-close once per day (at 4am msk) and then restart to purge memory. And to add notification abotu restart before 15, 10, 5 minutes

map crush if you delete spawn point

Map: beach_t1.alm : https://github.com/igroglaz/rom2maps/blob/master/3%20hard/beach_t1.alm

if I delete bottom respawn point - map starts to crush server with error:

[18.01.2020 10:52:59.448] Server started.
[18.01.2020 10:52:59.520] EXCEPTION DUMP:
eax=00000000h,ebx=0000000Dh,ecx=00000000h,edx=0018ED4Ch,
esp=0018ED10h,ebp=0018ED18h,esi=00000457h,edi=0217DAF8h;
eip=0059FF27h;
addr=0059FF27h,code=C0000005h,flags=00000000h
[18.01.2020 10:52:59.520] BEGIN STACK TRACE: 0x0059FF27h <= 0059C3DBh <= 0059BDC2h <= 004F1801h <= 0048E71Ch <= 004882AEh <= 005E0988h <= 005E0C3Eh <= 768F8E71h <= 768F90D1h <= 768FA66Fh <= 76925D00h <= 005DEA73h <= END STACK TRACE
[18.01.2020 10:52:59.525] Exception was caught, but there is no map. Not saving characters.

Warbeginner:
how such return could appear?

0059C3D6  |.  E8 00FBFFFF   CALL 0059BEDB                          ; \a2serv1.0059BEDB
!0059C3DB  |  8D4D EC       LEA ECX,[LOCAL.5]

из этого (обозримого даже в hiew):
0059FF10  /$  55            PUSH EBP                                 ; a2serv1.0059FF10(guessed Arg1)
0059FF11  |.  8BEC          MOV EBP,ESP
0059FF13  |.  83EC 08       SUB ESP,8
0059FF16  |.  894D F8       MOV DWORD PTR SS:[LOCAL.2],ECX
0059FF19  |.  8B45 08       MOV EAX,DWORD PTR SS:[ARG.1]
0059FF1C  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
0059FF1E  |.  894D FC       MOV DWORD PTR SS:[LOCAL.1],ECX
0059FF21  |.  8B55 08       MOV EDX,DWORD PTR SS:[ARG.1]
0059FF24  |.  8B45 FC       MOV EAX,DWORD PTR SS:[LOCAL.1]
!0059FF27  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
0059FF29  |.  890A          MOV DWORD PTR DS:[EDX],ECX
0059FF2B  |.  8B45 FC       MOV EAX,DWORD PTR SS:[LOCAL.1]
0059FF2E  |.  83C0 08       ADD EAX,8
0059FF31  |.  8BE5          MOV ESP,EBP
0059FF33  |.  5D            POP EBP
0059FF34  .  C2 0400       RETN 4

ZZYZX (in Russian from discord):

12:07]ZZYZX:А это не тот же самый краш где нулевой итем?
[12:08]ZZYZX:А удаление точки просто перезаписывает карту, вот оно и фиксится
[12:08]ZZYZX:Хотя посмотреть надо)
[12:10]ZZYZX:ух ты
[12:10]ZZYZX:Это вообще как
[12:12]ZZYZX:Выглядит как как будто во время итерации по списку (чуть ли не с помощью std::...::iterator) чего-то там оказывается нулл
[12:12]ZZYZX:Вопрос в том, почему нет проверки
[12:20]ZZYZX:Там такая конструкция странная которая не очень декомпилится идой
[12:20]ZZYZX:
Attachment file type: unknown
unknown.png
7.32 KB
[12:20]ZZYZX:Суть в том что sub_59BEDB принимает два аргумента
[12:21]ZZYZX:а arg_0, это аргумент как раз в 59AB40, которое и крашится
[12:21]ZZYZX:а хотя не)
[12:21]ZZYZX:Даже веселее
[12:21]ZZYZX:В 59AB40 вообще нету аргумента
[12:21]ZZYZX:Но при этом изнутри он читается
[12:21]ZZYZX:Как — мне непонятно
[12:22]ZZYZX:так
[12:22]ZZYZX:чё-т я куда-то не туда смотрю :D
[12:22]ZZYZX:Там стек чтоли кривой какой-то
[12:24]ZZYZX:0059FF27h <= 0059C3DBh это никак не получится, потому что перед 0059C3DBh стоит вызов 59BEDB а не 59FF10 -_-
[12:26]ZZYZX:Вывод, настоящий вызов находится внутри 59BEDB вот тут:
[12:26]ZZYZX:
Attachment file type: unknown
unknown.png
18.04 KB
[12:26]ZZYZX:Хоть стеку и не соответствует, зато ближайший)
[12:32]ZZYZX:У меня только один вопрос, на хуя это вообще делается
Attachment file type: unknown
unknown.png
6.88 KB
[12:32]ZZYZX:Этот код условно не делает вообще ничего
[12:32]ZZYZX:а, не, делает, кстати) он ставит a1=*a1, условно. Просто изнутри это выглядит как *a1 = **a1
[12:32]ZZYZX:В общем я примерно понял что происходит
[12:33]ZZYZX:Там какой-то linked list
[12:33]ZZYZX:Который кончается раньше
[12:33]ZZYZX:Чем указано в его размере (v23[3])
[12:34]ZZYZX:Происходит всё это мракобесие в конце загрузки карты
[12:34]ZZYZX:Скорее всего опять редактор какую-то дичь туда записал
[12:35]ZZYZX:Сохраните карту потом посмотреть чё с ней)
[12:35]ZZYZX:а. Был файл
[12:36]ZZYZX:В общем самый простой способ пофиксить конкретно это — проверять, что нулл (a1==0), перед вызовом 59FF10 (не внутри!)


temporary workaround on 'map' side - changed this respawn point to proper place..

skill limits for different classes

Add skill limits for different classes. Eg

warrior
maximum 100 pike
maximum 110 axe
maximum shooting 70

amazon
110 pike
100 axe
110 shooting

So we need such parameters in server config:

warrior_blade_max_skill
warrior_axe_max_skill
warrior_bludgeon_max_skill
warrior_pike_max_skill
warrior_shooting_max_skill

amazon_blade_max_skill
amazon_axe_max_skill
amazon_bludgeon_max_skill
amazon_pike_max_skill
amazon_shooting_max_skill

mage_fire_max_skill
mage_water_max_skill
mage_air_max_skill
mage_earth_max_skill
mage_astral_max_skill

witch_fire_max_skill
witch_water_max_skill
witch_air_max_skill
witch_earth_max_skill
witch_astral_max_skill

add server flag for random map order

as we will have new quest map concept (a lot of quest maps, like ~24; each one will have one item in the boss) it will be fun to be able to randomize order of their appearence; so players will be able to get certain equipment no matter of their timezone.

Our server restarts every 24 hours, so having 24 maps (each map for 1 hour) - we have full cycle once per day, till restart.

Possible float overflow when magic duration > 4096sec

The bug is related to magic duration when corresponding skill is high enough.

When magic duration is supposed to be more than 4096sec, overflow occurs and counter starts from zero.

Here is an example:

  1. Case 1
    Astral: 192
    Magic shield duration: 3944sec

  2. Case 2 (Overflow)
    Astral: 194
    Magic shield duration: 47.6sec

taverns doesn't give exp and sandbox

at softcore mode quests in taverns doesn't give exp. some players have complains over this mechanics, so I suppose good solution would be to add option in server config - to allow/disallow exp as reward in tavern. then we could make easy and middle maps with quest exp allowed

stone curse duration modifier

We need to be able to reduce Stone Curse effect drammatically, so it will work like temporary 'stun'. I've reduced 1 (out from 10), but it doesn't give any effect apparently:

			<empty>0</empty>
			<name>Stone Curse</name>
			<level>20</level>
			<manaCost>40</manaCost>
			<sphere>4</sphere>
			<item>0</item>
			<spellTarget>1</spellTarget>
			<deliverySystem>1</deliverySystem>
			<maxRange>5</maxRange>
			<effectSpeed>0</effectSpeed>
			<distribution>1</distribution>
			<radius>0</radius>
			<areaAffect>0</areaAffect>
			<areaDuration>0</areaDuration>
			<areaFrequency>0</areaFrequency>
			<unitApplyMethod>2</unitApplyMethod>
			<duration>1</duration>
			<frequency>0</frequency>
			<damageMin>-1</damageMin>
			<damageMax>-1</damageMax>
			<defensive>-1</defensive>
			<skillOffset>0</skillOffset>
			<scrollCost>10000</scrollCost>
			<bookCost>999000000</bookCost>
			<effect>&quot;absorbtion=+5:duration 1,defence=-20:duration 1&quot;</effect>

So I suppose this value hardcoded somehow.

Task if to add modifier to server config file which will allow changing this Stone Curse max duration.

elven scrolls casted as common scrolls

sometime elven scroll of earth protection applied as it was common scrolls. the same to other scrolls. it's a very rare chance, but it happens sometimes.

memory leak at server

There is a problem with server:

when I launch it - initially the RAM load is 40%. but gradually, it grows - in 9 hours it become ~60% and after a while it become close to 100% (even if there are no players on the hat). Apparently after each map change - server crookedly cleans the memory buffer or something

So without periodic reboots, the hat cannot work in principle.

stone curse and vampirism item's volume

in data file there is no 'stone curse' and 'vampirism' item's volume.. so we can not change certain items properties. we need to add such function.. to add it in data or just add some formulas to server code

Restrict maximum skill limit for different difficulties

Add limits for maximum skill value per different map difficulties - so players will have access for quests for longer time, because right now if you have more than 60 skill at easy map - you won't receive any quest in tavern (amount of overal exp counts).

We could use such values:

easy 60
medium 95
hard 100
horror 110

monster glitch stop

there is a forbidden (bannable offence!) way to put monster on respawn point:

  1. bring monster to respwan
  2. put it to stone curse (SC)
  3. put walls around him
  4. wait when he would be out ou SC
  5. cast fireball on him
  6. run out of his view radius
  7. mob would stay at this place

Darkness bug

Nikolai:
when dragon cast darkness and I've got ogre near me - my warrior doesnt hit him, but ogre hit me.

also if you start moving in darkness, slide show starts. you stay on the spot, then suddenly appear on tile next to you.. also heal doesnt work while it happens

bridges glitches

  1. in mapeditor when you build a bridge - it could become invisible
  2. stone walls spell works in strange way at bridge

Negative mana value

Negative mana value when casting "Light" scrolls to counter attach "Darkness" spell of a dragon3. Map: In and out. Screenshot attached.
NegativeMana

resistances limits for classes

add limits for max magic resistance values for different classes, eg:
warrior would have max earth resistance 94
amazon max earth 99
etc..

Flags for config:

warrior_fire_max_res
warrior_water_max_res
warrior_air_max_res
warrior_earth_max_res
warrior_astral_max_res

amazon_fire_max_res
amazon_water_max_res
amazon_air_max_res
amazon_earth_max_res
amazon_astral_max_res

mage_fire_max_res
mage_water_max_res
mage_air_max_res
mage_earth_max_res
mage_astral_max_res

witch_fire_max_res
witch_water_max_res
witch_air_max_res
witch_earth_max_res
witch_astral_max_res

stat potions problem for new classes (witch)

Witch receives spirit & body potions even if you have max stats (43 body, 48 agility, 52 spirit). Example Halodd had an issue that he wasn't able to get Mind potions as quest rewards (only via trading with community or creating new account). At this part his stats were somewhere around 43, 48, 54, 52

some items dissapear after upgrade from tavern quest

When player trying to upgrade vamp staff in tavern and it's 17-25 already - it gives message about 'cheating' and removes other random staff from inventory (not vamp); eg removed spray staff from our player

demon quest glitch

klen312 (Мафусаил):
Eg on the 'RedHat' map. Quest "Kill a group of enemies" with a portrait of a demon. Killed a demon - the quest is not ready. The demon rises - you kill again. Quest completed... So to complete demon quest you have to kill it twice..

apply 'nodrop' flag when player died from PK

Right now there are flags for experience: when the PK kill player - experience is not lost, and when the mob kills players - exp lost. Next task is to attach the 'nodrop' flag to a specific case - when player kill other player. So when someone PK other player 'manually' - this player won't loose equipment.

This is possible to implement. ZZYZX said:
Somewhere there is a pointer to the one who beat you for the last time. Arena murder messages works with this popinter. For example, if you hit someone with fire and then use #kill command on him - then game will write about fire. That is, there exist logic which checks who and what beat the last time, and is not activated directly when dealing damage.

fix problems in exp limitations

WarBeginner implemented different exp flags, but they doesn't work properly:

**

https://github.com/igroglaz/srvmgr/commit/a2a78d2ad34093d390a3db861022baeec97259d0

**

I've tested this config:
DeathExpMult=0.9
KilledExpMult=1
PKExpMult=1
RespawnExpMult2=1

I died 2 time from player, then died from monster...
Then entered on 'Horror' and died from monsters.
My experience become:
-1333333

Also one other guys had such exp when died !on each skill!:
blade 4294958543
axe 4294947424
bludgeon 18136
pike 128313
shooting 4294961710

after some time exp dropping dramatically

if you stay on the map for a long time, then you will get less experience; it is fixed by the camping from the map and re-enterin back.. It's like this: when you enter you get 100% per blow, at the end of map onlt 1-2%.

To fix it we should make exp amount always equal

physical resistance values for players

Add physical resistance values for different classes. This values won't be visible in UI, but they would add flavour to class system. Eg warriors would be more resistant to blugeon, amazons to sword, mage/witch to pike.

warrior_blade_res
warrior_axe_res
warrior_bludgeon_res
warrior_pike_res
warrior_shooting_res

amazon_blade_res
amazon_axe_res
amazon_bludgeon_res
amazon_pike_res
amazon_shooting_res

mage_blade_res
mage_axe_res
mage_bludgeon_res
mage_pike_res
mage_shooting_res

witch_blade_res
witch_axe_res
witch_bludgeon_res
witch_pike_res
witch_shooting_res

The same stuff could be made for magic resistances - so each class will have different flavour

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.