Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
 parse description bug
Yesterday, 10:08 pm
By Remcon
Couple bugs
Dec 12, 2017, 5:42 pm
By Remcon
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
Bug in will_fall( )
Oct 23, 2017, 1:35 am
By GatewaySysop
Bug in do_zap( ), do_brandish( )
Oct 18, 2017, 1:52 pm
By GatewaySysop
LOP 1.45
Author: Remcon
Submitted by: Remcon
LOP Heroes Edition
Author: Vladaar
Submitted by: Vladaar
Heroes sound extras
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.3
Author: Vladaar
Submitted by: Vladaar
Memwatch
Author: Johan Lindh
Submitted by: Vladaar
Users Online
CommonCrawl, DotBot

Members: 0
Guests: 8
Stats
Files
Topics
Posts
Members
Newest Member
477
3,706
19,240
608
LAntorcha
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Codebases » SmaugFUSS » Bug (another one) in disarm( )
Forum Rules | Mark all | Recent Posts

Bug (another one) in disarm( )
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Jan 15, 2017, 10:04 am   Last edited Jan 17, 2017, 5:16 pm by Remcon
Go to the top of the page
Go to the bottom of the page

GatewaySysop
Conjurer
GroupMembers
Posts367
JoinedMar 7, 2005

So one more thing I noticed in here, was that in the case of DFND_DISARM, for example, the caller is not do_disarm( ), so you don't necessarily have the check for caller wielding weapon. My understanding is that disarm only works when both victim and attack are armed. :shrug:

If that's the case, add the following, otherwise your DFND_DISARM mobiles will end up attempting to disarm folks even if they have no weapon. :headbang:

In skills.c, function disarm( ):

    if ( ( obj = get_eq_char( victim, WEAR_WIELD ) ) == NULL )
    	return;

    if ( ( tmpobj = get_eq_char( victim, WEAR_DUAL_WIELD ) ) != NULL && number_bits( 1 ) == 0 )
    	obj = tmpobj;


Change to include:

    if ( ( obj = get_eq_char( victim, WEAR_WIELD ) ) == NULL )
    	return;

    if ( get_eq_char( ch, WEAR_WIELD ) == NULL )
    	return;

    if ( ( tmpobj = get_eq_char( victim, WEAR_DUAL_WIELD ) ) != NULL && number_bits( 1 ) == 0 )
    	obj = tmpobj;


       
Post is unread #2 Jan 18, 2017, 2:53 pm
Go to the top of the page
Go to the bottom of the page

Sadiq
Fledgling
GroupMembers
Posts24
JoinedJan 7, 2010

I'm not so sure about implementing this on my copy...

You are correct that as the code stands, an unarmed mob can disarm an armed character....but I am not convinced that that is necessarily a Bad Thing™. There are lots of stories about humans (and monsters) that have disarmed opponents barehanded - monk types spring to mind. I suppose that this one is a preference call, in regards to whether to implement it or not.

Having said that, if someone wanted to implement the change you advocate, your solution would do the trick. :wink:
       
Post is unread #3 Jan 18, 2017, 8:13 pm
Go to the top of the page
Go to the bottom of the page

GatewaySysop
Conjurer
GroupMembers
Posts367
JoinedMar 7, 2005

Sadiq said:

I'm not so sure about implementing this on my copy...

You are correct that as the code stands, an unarmed mob can disarm an armed character....but I am not convinced that that is necessarily a Bad Thing™. There are lots of stories about humans (and monsters) that have disarmed opponents barehanded - monk types spring to mind. I suppose that this one is a preference call, in regards to whether to implement it or not.

Having said that, if someone wanted to implement the change you advocate, your solution would do the trick. :wink:


Yeah that sorta came to mind when I digging through it, actually..

For PCs the check is there (in do_disarm, as opposed to disarm( ) itself), so in my view, it should be enforced for any other callers as well. If I'm going to tell my PCs "You need a weapon to disarm someone", might be odd for them if an unarmed mobile then disarms them.

However, having said that, I also made the call because I've been on a kick of making mobiles more PC-like and able to use all the defenses they can, having added shieldblock, tumble, duck, block, counter, redirect and several others. For all of those I have rules (i.e. you can't counter if you haven't blocked, block doesn't work on weapons only bare hands, etc.) so each one sorta fills a niche situation. Were I not doing that, I probably wouldn't have found this anyway, and likely would have left it.

So, long story short, I agree with you that it is a bug depending upon one's disposition. To the extent that someone like minded should not intend for it to work differently for do_disarm( ) vs any other caller of disarm( ), hopefully this post is of some value, but I fine calling it a "maybe bug" rather than outright. No argument from me. :alien:
       
Post is unread #4 Jan 20, 2017, 3:14 pm
Go to the top of the page
Go to the bottom of the page

Sadiq
Fledgling
GroupMembers
Posts24
JoinedJan 7, 2010

You know....

The more I thought about your reasoning on this, the more I have become convinced that your logic that 'what's good for them is good for us' makes sense to me. I still hold that a character can still possibly disarm an opponent barehanded - but now am thinking that instead of DISALLOWING barehanded NPC's to disarm....maybe I should ALLOW my PC's to disarm, barehanded, given the right circumstances.

Maybe a CAN_DISARM flag or macro or something.....hrm
       
Post is unread #5 Jan 20, 2017, 5:16 pm
Go to the top of the page
Go to the bottom of the page

GatewaySysop
Conjurer
GroupMembers
Posts367
JoinedMar 7, 2005


Sadiq said:

You know....

The more I thought about your reasoning on this, the more I have become convinced that your logic that 'what's good for them is good for us' makes sense to me. I still hold that a character can still possibly disarm an opponent barehanded - but now am thinking that instead of DISALLOWING barehanded NPC's to disarm....maybe I should ALLOW my PC's to disarm, barehanded, given the right circumstances.

Maybe a CAN_DISARM flag or macro or something.....hrm


Ha ha. I like it! :imp:


       
Pages:<< prev 1 next >>