problem with a verb routine

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:smile: :sad: :eek: :shock: :cool: :-x :razz: :oops: :evil: :twisted: :wink: :idea: :arrow: :neutral: :mrgreen:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: problem with a verb routine

by Roody_Yogurt » Thu May 05, 2016 3:24 pm

First off, you want to be sure that your DoHit replacement is somewhere after roodylib is included (assuming you're using Roodylib), as that also replaces DoHit.

Then, you'd want your replacement to look something like this:

replace DoHit
{
if object is not living
VMessage(&DoHit)
elseif object = player
RlibMessage(&DoHit)
else
return fight(player, object)
}

Also, in your code, don't you want to set DamageRoll before you call the attack message?

by misterman83 » Thu May 05, 2016 12:49 pm

Yes it does.
Here's my external attack routine:
routine fight(attacker, target)
{
AttackRoll = random(20)
if AttackRoll < target.armor_class: print CombatMessage(attacker, target, 1)
else {
print CombatMessage(attacker, target, 2)
DamageRoll = random(attacker.damage)
target.health -= (DamageRoll)
}
}

and Here's my combatMessages routine:
routine CombatMessage(attacker, target, num)
{
select num
case 1
{
print CThe(attacker);
print MatchPlural(attacker, "misses", "miss");
"!"
}
case 2
{
print CThe(attacker);
print MatchPlural(attacker, "hits", "hit");
print CThe(target);
" for ";
print number DamageRoll;
" damage!"
}
}

by Roody_Yogurt » Fri Apr 29, 2016 7:51 am

I'd probably have to see the code to track it down. Does your external routine have an argument for the attacker, like:

AttackSystem(attacker, victim)

Then you'd have your replacement DoHit call it with:

AttackSystem(player, object)

(so then your code can check if the attacker is the player for player-optimised messages)

by misterman83 » Thu Apr 28, 2016 12:47 pm

Whoops. I think I posted the topic twice.

problem with a verb routine

by misterman83 » Thu Apr 28, 2016 12:44 pm

I'm working on a tactical combat system, slightly based on Necrotic Drift. For some reason, my DoHit replacement isn't working: Either the verb messages aren't printing, or the verb routine isn't running when I type "attack x".
The verb routine calls an external routine to calculate attack and damage rolls, as well as deal damage.
The external routine calls yet another external routine to print combat messages.
I don't think the problem lies in the external routine: it works perfectly when enemies attack the player, but not for when the player attacks an enemy.
Any help is appreciated.

Top