NARMIIW - some kind of no-random-mod
Moderator: Forum Moderators
NARMIIW - some kind of no-random-mod
NARMIIW - No Attack Randomness Mod Implemented In WML
So, here it is a WML-only mod that takes away all[1] randomness of Wesnoth.
How does it work?
Well, it's kind of simple, I decided to use the terrain defense modifier value (that traditionally is used to calculate CtH) as just another damage modifier (like resistances[2], ToD) and grant all units 0% defense everywhere instead.
Current limitations
- Doesn't handle magic/marksman/guardsman/some-ability-I-forgot-about (unfortunately that means that you can only play northeners atm if you want to enjoy the full glory of the mod or refrain from using magicians/marks(wo)men/guardsmen)
- Doesn't handle random traits and other random things I might have forgot
- Requires a modified scenario-file
- The interface isn't up to this kind of mod (the attack-dialog appears before the attack-event, but you should be able to calculate the damage dealt quite easily, eg 5-4(60%) becomes 3-4(100%). Maybe I will post a FR about, maybe not.
Where do I get it?
So far it's in the tgz-archive below, if it gets highly popular and I finish all the tweaks so that it's complete I will probably upload it to the addon-server.
The archive contains modified versions of the scenario-files for the standard 1v1 maps of the official 1.4.1 release.
What is left to do?
- Deal with magic/marksman/guardsman/some-ability-I-forgot-about
- Deal with traits (but then it will have to be renamed to NRMIIW)
- Generalise it even more so that I don't have to bundle a bunch of modified scenario-files, but instead allow the player(s?) to chose if they want to play a NARMIIW-game or a standard game.
Ok, now all you luck-screws-my-game-people, go and have some fun!
As for the rest of you, you can try it too you know
/tsr
[1] Ooops, that was I lie, I still haven't dealt with magic/marksman/guardsman, but that is somewhat minor stuff that I[3] will deal with if at least 3 people report that they have used the mod and share some intelligent comments[4]. And you still have the traits, but that imho is a minor 'glitch' that can - if I find it interesting enough to do - be removed too.
[2] Actually it's just like resistances, I just adjust the units resistances to add another percentage that is equal to the terrain defense.
[3] If you want to code it, I'm more than happy to recieve a patch.
[4] And yes, I get to decide if the comment is intelligent
So, here it is a WML-only mod that takes away all[1] randomness of Wesnoth.
How does it work?
Well, it's kind of simple, I decided to use the terrain defense modifier value (that traditionally is used to calculate CtH) as just another damage modifier (like resistances[2], ToD) and grant all units 0% defense everywhere instead.
Current limitations
- Doesn't handle magic/marksman/guardsman/some-ability-I-forgot-about (unfortunately that means that you can only play northeners atm if you want to enjoy the full glory of the mod or refrain from using magicians/marks(wo)men/guardsmen)
- Doesn't handle random traits and other random things I might have forgot
- Requires a modified scenario-file
- The interface isn't up to this kind of mod (the attack-dialog appears before the attack-event, but you should be able to calculate the damage dealt quite easily, eg 5-4(60%) becomes 3-4(100%). Maybe I will post a FR about, maybe not.
Where do I get it?
So far it's in the tgz-archive below, if it gets highly popular and I finish all the tweaks so that it's complete I will probably upload it to the addon-server.
The archive contains modified versions of the scenario-files for the standard 1v1 maps of the official 1.4.1 release.
What is left to do?
- Deal with magic/marksman/guardsman/some-ability-I-forgot-about
- Deal with traits (but then it will have to be renamed to NRMIIW)
- Generalise it even more so that I don't have to bundle a bunch of modified scenario-files, but instead allow the player(s?) to chose if they want to play a NARMIIW-game or a standard game.
Ok, now all you luck-screws-my-game-people, go and have some fun!
As for the rest of you, you can try it too you know
/tsr
[1] Ooops, that was I lie, I still haven't dealt with magic/marksman/guardsman, but that is somewhat minor stuff that I[3] will deal with if at least 3 people report that they have used the mod and share some intelligent comments[4]. And you still have the traits, but that imho is a minor 'glitch' that can - if I find it interesting enough to do - be removed too.
[2] Actually it's just like resistances, I just adjust the units resistances to add another percentage that is equal to the terrain defense.
[3] If you want to code it, I'm more than happy to recieve a patch.
[4] And yes, I get to decide if the comment is intelligent
- Attachments
-
- NARMIIW.tar.gz
- This is it folks, grab your copy while it's hot ;)
- (11.07 KiB) Downloaded 349 times
Re: NARMIIW - some kind of no-random-mod
if i were you i would include magic/marksman/guardsman as soon a spossible becasue it makes no sense to renounce on them, so actually the mod is unplayable -
you actually get punished for byuing a mage for example, limiting all factions that have mages
so the idea is not bad its nice to try it out, but it should be really completed becasue it makes no sense to play the mod atm
so go for it, then i try it out
EDIT:
btw, and make it able to deal with traits of course also. i would have supposed that would happen automatically though (increasing base damage or health dont affect the calcultion itself ?)
EDIT:
In every case its good to have it, no matter it it will be used regularly or not;)
i also dont see a big nessessity for dealing with the interface.
you actually get punished for byuing a mage for example, limiting all factions that have mages
so the idea is not bad its nice to try it out, but it should be really completed becasue it makes no sense to play the mod atm
so go for it, then i try it out
EDIT:
btw, and make it able to deal with traits of course also. i would have supposed that would happen automatically though (increasing base damage or health dont affect the calcultion itself ?)
EDIT:
In every case its good to have it, no matter it it will be used regularly or not;)
i also dont see a big nessessity for dealing with the interface.
The best bet is your own, good Taste.
Re: NARMIIW - some kind of no-random-mod
Agreed, I just wanted to get the code out there, for people to try out (and I'm also hoping that someone will be able guide me on how to incorporate magic/marksman/guardsman - especially guardsman).Mabuse wrote:if i were you i would include magic/marksman/guardsman as soon a spossible becasue it makes no sense to renounce on them, so actually the mod is unplayable -
you actually get punished for byuing a mage for example, limiting all factions that have mages
But well, if you think about it there aren't that many units that are affected by the current limitations, you could try it anywayMabuse wrote: so the idea is not bad its nice to try it out, but it should be really completed becasue it makes no sense to play the mod atm
so go for it, then i try it out
What I meant was that atm it allows units to recieve random traits and thus randomness still affects the game, I have no good idea on how to handle that, since traits are imho a relevant balancing factor.Mabuse wrote:btw, and make it able to deal with traits of course also. i would have supposed that would happen automatically though (increasing base damage or health dont affect the calcultion itself ?)
Well, I imagine (or actually hope) that the interface thing is 'just' a matter of switching 2 calls in the code (so that trigger_wml_event_attack appears before trigger_interface_event_attack_dialog), but I haven't got a real clue to be honest.Mabuse wrote:In every case its good to have it, no matter it it will be used regularly or not;)
i also dont see a big nessessity for dealing with the interface.
/tsr
Re: NARMIIW - some kind of no-random-mod
Here's a nicer implementation for you:
Handles everything but attacks granted to units by [object]s. Surely enough even that would be possible, but I think only feasible in 1.5.
Code: Select all
[era]
id=era_default_noluck
name= _ "NoLuck Default Era"
{RANDOM_SIDE}
{multiplayer/factions/loyalists-default.cfg}
{multiplayer/factions/rebels-default.cfg}
{multiplayer/factions/northerners-default.cfg}
{multiplayer/factions/undead-default.cfg}
{multiplayer/factions/knalgans-default.cfg}
{multiplayer/factions/drakes-default.cfg}
#define NOLUCKIFY_UNIT UNIT_VAR
{FOREACH {UNIT_VAR}.attack i}
[object]
silent=yes
name="noluck"
[filter]
x,y=${UNIT_VAR}.x,${UNIT_VAR}.y
[/filter]
[effect]
apply_to=attack
name=${UNIT_VAR}.attack[$i].name
range=${UNIT_VAR}.attack[$i].range
type=${UNIT_VAR}.attack[$i].type
[set_specials]
mode=append
[chance_to_hit]
id=always_hit
name,description="",""
cumulative=yes
value=100
apply_to=self
[/chance_to_hit]
[damage]
id,name,name_inactive,apply_to,multiply=damage10,"10% damage","",self,0.1
[filter_opponent]
defense=10
[/filter_opponent]
[/damage]
[damage]
id,name,name_inactive,apply_to,multiply=damage20,"20% damage","",self,0.2
[filter_opponent]
defense=20
[/filter_opponent]
[/damage]
[damage]
id,name,name_inactive,apply_to,multiply=damage30,"30% damage","",self,0.3
[filter_opponent]
defense=30
[/filter_opponent]
[/damage]
[damage]
id,name,name_inactive,apply_to,multiply=damage40,"40% damage","",self,0.4
[filter_opponent]
defense=40
[/filter_opponent]
[/damage]
[damage]
id,name,name_inactive,apply_to,multiply=damage50,"50% damage","",self,0.5
[filter_opponent]
defense=50
[/filter_opponent]
[/damage]
[damage]
id,name,name_inactive,apply_to,multiply=damage60,"60% damage","",self,0.6
[filter_opponent]
defense=60
[/filter_opponent]
[/damage]
[damage]
id,name,name_inactive,apply_to,multiply=damage70,"70% damage","",self,0.7
[filter_opponent]
defense=70
[/filter_opponent]
[/damage]
[/set_specials]
[/effect]
[/object]
{NEXT i}
#enddef
[event]
name=start
[store_unit]
[filter]
x,y=1-999,1-999
[/filter]
kill=no
variable=units
[/store_unit]
{FOREACH units j}
{NOLUCKIFY_UNIT units[$j]}
{NEXT j}
{CLEAR_VARIABLE units}
[/event]
[event]
name=prerecruit
first_time_only=no
{NOLUCKIFY_UNIT unit}
[/event]
[event]
name=attack
first_time_only=no
[filter]
[not]
[wml_filter]
[modifications]
[object]
name="noluck"
[/object]
[/modifications]
[/wml_filter]
[/not]
[/filter]
{NOLUCKIFY_UNIT unit}
[/event]
[/era]
Re: NARMIIW - some kind of no-random-mod
wow, thanks, thats nice
"no luck default era."
what about putting it on add-on server
i would try it out, and even if it is just to check some situtions, for example on isars cross (that comes to my ind in this moment), the attacking naga in the water village, what firepower is needed to get a statistical kill, so i can rely on the fact that as long i dont have no bad luck it would be dead or something.
surely a nice thing to check out statistical kills and stuff
"no luck default era."
what about putting it on add-on server
i would try it out, and even if it is just to check some situtions, for example on isars cross (that comes to my ind in this moment), the attacking naga in the water village, what firepower is needed to get a statistical kill, so i can rely on the fact that as long i dont have no bad luck it would be dead or something.
surely a nice thing to check out statistical kills and stuff
The best bet is your own, good Taste.
Re: NARMIIW - some kind of no-random-mod
You do realize that roughly 50% of the time you will have bad luck, according to your statistical kill model.
Re: NARMIIW - some kind of no-random-mod
Can you really use a mecro definition argument as a macro parameter call like that?#define NOLUCKIFY_UNIT UNIT_VAR
{FOREACH {UNIT_VAR}.attack i}
http://www.wesnoth.org/wiki/User:Sapient... "Looks like your skills saved us again. Uh, well at least, they saved Soarin's apple pie."
Re: NARMIIW - some kind of no-random-mod
Yes, it worked just fine.Sapient wrote:Can you really use a mecro definition argument as a macro parameter call like that?#define NOLUCKIFY_UNIT UNIT_VAR
{FOREACH {UNIT_VAR}.attack i}
Anyways, I'll hopefully have a bit more refined version in a moment.
Re: NARMIIW - some kind of no-random-mod
only if it is exactly on the edge, beside that itJozrael wrote:You do realize that roughly 50% of the time you will have bad luck, according to your statistical kill model.
doesnt matter really, its just a good thing to set up a theoretical defense/attack, if you have bad luck you cant change anything about it anyway, beside having some Unit(s) as a reserve (which is usually the case ).
setting up a defense (or attack) that provide a statisticall kill is anyway better than relying on luck to get that kill
of course you can also simply calculate it - i am just curious about some things
The best bet is your own, good Taste.
Re: NARMIIW - some kind of no-random-mod
Thanks, but actually it doesn't. Well it handles everything that my current implementation handles in a much nicer way. Thanks for thatzookeeper wrote:Here's a nicer implementation for you:
Handles everything but attacks granted to units by [object]s. Surely enough even that would be possible, but I think only feasible in 1.5.Code: Select all
...
But unfortunately it has two flaws.
(minor): it doesn't round in a nice way but floor:s the new damage-values
(major): it doesn't handle 'magic', eg a magic attack should always hit using 70% of the base attack no matter what defense the other unit is on. (and I suspect it has the same issue with marksman).
Too bad I'm too unskilled in WML to alter your code, but maybe you can or you could show me how to make a 'simple' filter in an attack event so to: just let the event fire for when attacker isn't using magic/marksman and defender isn't using magic.
Again, thanks for helping out I really appreciate it.
/tsr
Re: NARMIIW - some kind of no-random-mod
yes, thats right.tsr wrote: (major): it doesn't handle 'magic', eg a magic attack should always hit using 70% of the base attack no matter what defense the other unit is on. (and I suspect it has the same issue with marksman).
the noluck era cant handle magic(tested it), therefore remains useless for the moment
(as magic and marksman is of major importance to work correctly)
also i agree with tsr that it should round new damage values, so >.5 should be rounded up
(becasue it sucks when mage has 7 x 0.7 = 4.9 - and then its rounded down to 4 as base damage - so 4.9 should be 5 )
The best bet is your own, good Taste.
Re: NARMIIW - some kind of no-random-mod
Magic/marksman can be added ... just a similar [damage]-tag, which filters on the magic-special, and a not-filter to the other damage-tags.
Or, easier (and less safe-file-heavy): an if-clause in the for-loop, checking for the attack specials then.
Or, easier (and less safe-file-heavy): an if-clause in the for-loop, checking for the attack specials then.
Re: NARMIIW - some kind of no-random-mod
couldn't you round by adding .5 and then take the int
round(x) = round_down(x+0.5)
round(x) = round_down(x+0.5)
~ I'll heal you by 4 hp if you post next to me ~
Have a look at the Era of Strife, featuring Eltireans, Eventide, Minotaurs, Saurians and Triththa
Have a look at the Era of Strife, featuring Eltireans, Eventide, Minotaurs, Saurians and Triththa
Re: NARMIIW - some kind of no-random-mod
or multiply by 10, add 5, then divide by 10.
(but this won't work for negative numbers)
(but this won't work for negative numbers)
http://www.wesnoth.org/wiki/User:Sapient... "Looks like your skills saved us again. Uh, well at least, they saved Soarin's apple pie."
Re: NARMIIW - some kind of no-random-mod
Very nice, thanks, testing it.
looking into the wml code to see how it works
PD: The magic could be solved if we should rely on eras builded exclusive for the mod, Mages could have a different skill that makes them hit 100% of the time and the damage adjusted to it. And make an event that makes this type of attack to just ignore the new rules.
looking into the wml code to see how it works
PD: The magic could be solved if we should rely on eras builded exclusive for the mod, Mages could have a different skill that makes them hit 100% of the time and the damage adjusted to it. And make an event that makes this type of attack to just ignore the new rules.
Last edited by Fosprey on May 2nd, 2008, 11:48 pm, edited 2 times in total.