Search Results
Searched for posts by vasiliy in all forums

Showing results 41 - 50 out of 434 total
Modify your search
Posted by vasiliy, Mar 12 at 11:34 pm
ah, i see now, thank you!

in the inventory, this is purely visual bug, which is quite hard to fix — total inventory weight is right. the problem is that item piling expects exactly the same items, and uses the weight of the first item to calculate the overall weight. so the first picked up lump is used. list description is created by the separate method, so there is no way to set a custom weight there.

but total inventory weight is calculated without piling, so it is always correct.

and now i see how it affects shops: the same logic is applied for them: the price of the first item in the pile determines the total price. this is much bigger problem, but it is also easier to fix: we need to loop over the whole pile summing the prices, instead of using the simple multiplication.

thank you for noticing, this is great bug! i mean, most people will prolly won't notice it (i haven't — that's why it was never fixed.

SPOILER ALERT. Click here to see text.
sorry, red, i cannot fix it in vanilla right now. will try to make the patch later. basically, you need to pass `itemvector` to `room:ropItems()`, and calculate the proper price there — instead of passing only the first item and the amout. see this commit for the inspiration.
Posted by vasiliy, Mar 12 at 10:44 pm
how exactly to reproduce that? i picked up gold lumps with your save, and everything working as expected. tried to sell them in Attnam, and of course, got only 96 gp for them, because that's all shopkeeper has left.
Posted by vasiliy, Mar 12 at 7:55 pm
i implemented and now testing "Attnam hierarchy".

SPOILER ALERT. Click here to see text.
now, if you will attack a citizen, other citizens who see this will run away, and city guards will try to kill you. if you manage to kill some city guards, "business people" of Attnam and temple guard will try to kill you. if you'll kill some temple guards, elite temple guard will run for you. then Lords, then Petrus. non-guard temple people will eventually join too. also, Attnam citizens don't care about rebellions, so if you start with guards, citizens won't mind: who cares what is the current name of the High Priest after all?

if you attack Petrus, "free" warrior princess will join you (and probably die . if you'll give a weapon to imprisoned pricess, she will ask if you want her to join (let's pretend that guards won't mind), but she will refuse to leave Attnam without her sister.

also, Petrus' wives will not join the fight. (one husband or another… they're all the same!) ambassadors will not join too: it is none of their business, they are ready to make a deal with any Petrus.

now everything looks way more logical, i believe.

note that we now have "hostile after N kills" team option, so you have to actually kill several people to make such team hostile.
Posted by vasiliy, Mar 12 at 4:33 pm
implemented "guarded room" concept. this is the new type of the room, which could have "guard team" assigned. if any monster attacks the player in such room, guard team will kill the monster (by moving it to the special "perpetrator" team, so they won't hunt for all monsters on the map . currently it is used for Kharaz Arad entry in GC: four guards there are not for nothing, and they will not tolerate fights. guard team doesn't need a master, and its members need not to be in a room itself, so it is possible to use this to create various rooms with "external guard".

SPOILER ALERT. Click here to see text.
what the f… is "Anvitas the gigantic mutant hedgehog", and where i got it from?! i wanted to summon the good old hedgehog from UT to test the feature, not this beast!
Posted by vasiliy, Mar 11 at 5:41 pm
with more team system improvements, Attnam should work like this: killing some citizen will not make other citizens hostile (but those surrounding the scene will panic). instead the city guards will start hunting you. killing two city guards will turn temple guards hostile. killing a temple guard will turn lords hostile. killing a lord will turn Petrus hostile. i think it will be more fun this way.

and if you are interested how guards know… all of them will carry The Holy Radio Device (property of Divine TeleCom Inc.). yes, picked up radio can be activated. you'd better don't do that.
Posted by vasiliy, Mar 11 at 11:45 am
while i was asleep, i got the idea. while we don't have sound propagation system (yet, i hope , it is possible to make at least shopkeepers more … "realistic", lol.

i already have the concept of "protective" teams. protective team will turn hostile along with the team it protects. this was done so Kaethos will turn hostile if you attack villagers: Kaethos need its own team for game mechanics reasons (tourists follows the leader of tourist guide team; btw, have you noticed that Kaethos really goes to various map spots, and tourists follow him?), and hardcoding special rules looked wrong.

now, i can introduce a flag which will not turn protective teams hostile along with the main, and use it when we need to make shopkeeper hostile for stealing, for example. this way, if the shopkeeper is in its own team (with guards! , and the player tries to steal something (and failed), only the shopkeeper and the guards will turn hostile. but! if the player will attack them in retallation, then the whole Attnam will run for help due to "protective" relations.

so, you'll be able to steal from the shop, run away (teleport, etc.), and get out of the city. then return, and as long as you'll manage to not reply with offensive actions, the city will not hunt you.

now, as we can have shopkeepers in their own teams, this opens other interesting possibilities. for example, if you return to the city, the shopkeeper instead of immediately attacking may demand you to pay your debt (prolly *5 or something). so if you'll manage to find a wand of teleport, you can… lift that Great Item, run away, sell half of GC to Merka, return, and pay your debt.

looks like interesting small mechanics to me, and not that hard to implement (sound propagation is much, much more compex).

p.s.: and if you don't have enought money… there is still no reason to kill you. the shopkeeper could simply take all your money, all your inventory, and give you filthy tunic and bone dagger instead (not omel bone! . and i can make it even more fun by freezing current danger level. i.e. the danger level could go up, but won't go down, effectively making the game think that you still possess your old gear, and spawn monsters accordingly. ahahaha.
Posted by vasiliy, Mar 11 at 1:16 am
i never did it for almost two decades. hacking the game code is MUCH easier.
Posted by vasiliy, Mar 11 at 1:04 am
implemented in-engine simple "set property tracker" for databases. the database now knows if it got the field from the parent db, and if it was set by the current config. so it is now possible to properly check if required fields (like default strengthes) are missing. i implemented the simple check, will prolly implement better checks later.

"database" is configuration info in invaneese. base config is #0. and the game now tracks which fields were copied, and which were (re)defined. i had to spend some time decifering (again) how all that works.

fun facts:
room scripts traverse the inheritance chain in runtime to find property value. this is done in interesting way, and missing value (up to the base level) could cause a segfault.

other script objects simply copying the basic configuration as a whole instead, so no runtime lookups are done after parsing the scripts. this is faster, but also means that changed database values in runtime won't be automatically propagated to child configurations. not that the game ever does that, but still good to know.

the whole database system is a mess, and hard to follow if you don't already have the mental picture of the actual implementation. but the implementation itself is quite smart.

adding/removing character configuration will make the save invalid. i.e. if you will add a new character config, remove a config, or add/remove a character, old saves will be broken. it can be fixed, but currently i see no reason in doing so. this includes changing "can create golem" material flags, and `UndeadVersions` character property (because those properties are used to create golems, zombies, ghosts and skeletons). character definition order matters too.

speculation: there are prolly 2 or 3 persons on the whole planed who understand how that shit works. i'm not one of them.
Posted by vasiliy, Mar 11 at 12:52 am
chaostrom wrote
Well yeah, back in 0.50 they did break pretty easily. I'm unable to recall any discussion on making them less prone to breaking though?
thank you! i will prolly check if lanterns are different in CVS later.
Posted by vasiliy, Mar 10 at 7:58 pm
(shameless self-promotion) try k8IVAN, it has better UI, some unique features, and many more new crashes!