Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
6Dragons 4.3 bugfixes
Feb 5, 2017, 8:28 am
By Vladaar
Bug in violence_update( )
Jan 28, 2017, 3:54 pm
By Sadiq
Bug in mobile_update( )
Jan 25, 2017, 4:19 pm
By GatewaySysop
Bug (another one) in disarm( )
Jan 20, 2017, 5:16 pm
By GatewaySysop
Bug in format_obj_to_char( )
Jan 13, 2017, 10:01 am
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
Beastmaster 6D sound files
Author: Vladaar
Submitted by: Vladaar
Users Online
CommonCrawl, Google, Bing, Yandex

Members: 0
Guests: 12
Stats
Files
Topics
Posts
Members
Newest Member
476
3,695
19,209
602
ServerFailure
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
Posts360
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
Posts360
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
Posts360
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 >>