mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-06-09 23:29:37 +00:00
Fixed XP gaining for party. Improvements to melee weapon combat, and to hand-to-hand combat
This commit is contained in:
parent
4e1fb075e5
commit
026e1c2e5d
|
@ -3787,18 +3787,24 @@ class A2PackPartitions
|
|||
replaceIfDiff("build/src/plasma/gen_flags.pla")
|
||||
}
|
||||
|
||||
def lookupStringOrNull(strings, str)
|
||||
{
|
||||
if (str == null || str.trim() == "")
|
||||
return "NULL"
|
||||
assert strings[str] != null
|
||||
return "@${strings[str]}"
|
||||
}
|
||||
|
||||
def genWeapon(func, row, out, strings)
|
||||
{
|
||||
assert strings[parseStringAttr(row, "weapon-kind")] != null
|
||||
assert strings[parseStringAttr(row, "ammo-kind")] != null
|
||||
assert strings[parseStringAttr(row, "combat-text")] != null
|
||||
out.println(
|
||||
" return makeWeapon_pt2(makeWeapon_pt1(" +
|
||||
"${escapeString(parseStringAttr(row, "name"))}, " +
|
||||
"@${strings[parseStringAttr(row, "weapon-kind")]}, " +
|
||||
"${lookupStringOrNull(strings, parseStringAttr(row, "weapon-kind"))}, " +
|
||||
"${parseWordAttr(row, "price")}, " +
|
||||
"${parseModifier(row, "bonus-value", "bonus-attribute")}, " +
|
||||
"@${strings[parseStringAttr(row, "ammo-kind")]}, " +
|
||||
"${lookupStringOrNull(strings, parseStringAttr(row, "ammo-kind"))}, " +
|
||||
"${parseByteAttr(row, "clip-size")}, " +
|
||||
"${parseDiceAttr(row, "melee-damage")}, " +
|
||||
"${parseDiceAttr(row, "projectile-damage")}), " +
|
||||
|
@ -3812,6 +3818,8 @@ class A2PackPartitions
|
|||
|
||||
def genArmor(func, row, out, strings)
|
||||
{
|
||||
assert strings[parseStringAttr(row, "armor-kind")] != null
|
||||
assert strings[parseStringAttr(row, "armor-kind")] != ""
|
||||
out.println(
|
||||
" return makeArmor(" +
|
||||
"${escapeString(parseStringAttr(row, "name"))}, " +
|
||||
|
@ -3835,7 +3843,7 @@ class A2PackPartitions
|
|||
if (count > 0 && !name.contains("("))
|
||||
printWarning("countable item should have (singular/plural) in name")
|
||||
out.println(" return makeFancyItem(${escapeString(name)}, $price, " +
|
||||
"@${strings[kind]}, $modifier, $count, $storeAmount, $lootAmount)")
|
||||
"${lookupStringOrNull(strings, kind)}, $modifier, $count, $storeAmount, $lootAmount)")
|
||||
}
|
||||
else
|
||||
out.println(" return makePlainItem(${escapeString(name)}, $price)")
|
||||
|
|
|
@ -283,7 +283,11 @@ def playerMelee(pPlayer, pWeapon)#0
|
|||
byte agil
|
||||
|
||||
// Maybe in the future we'll put this under control of a global script
|
||||
sAction = (rand16() % 2) ?? "punches" :: "kicks"
|
||||
if pWeapon
|
||||
sAction = pWeapon=>s_combatText
|
||||
else
|
||||
sAction = (rand16() % 2) ?? "punches" :: "kicks"
|
||||
fin
|
||||
|
||||
pEnemy = chooseEnemy(5, pPlayer->b_gangChoice) // max distance 5 feet for melee
|
||||
if !pEnemy
|
||||
|
@ -619,6 +623,7 @@ def chooseWeapon(pl, pWeapon)#0
|
|||
fin
|
||||
pi = pi=>p_nextObj
|
||||
loop
|
||||
displayOption(i, "Fists & Feet")
|
||||
while TRUE
|
||||
k = getUpperKey
|
||||
sel = NULL
|
||||
|
@ -631,12 +636,15 @@ def chooseWeapon(pl, pWeapon)#0
|
|||
pi = pi=>p_nextObj
|
||||
loop
|
||||
if sel; break; fin
|
||||
if k == 'A'; break; fin // selected Fists & Feet
|
||||
beep
|
||||
loop
|
||||
fin
|
||||
|
||||
// Apply the final selection
|
||||
sel->b_flags = sel->b_flags | ITEM_FLAG_EQUIP
|
||||
if sel
|
||||
sel->b_flags = sel->b_flags | ITEM_FLAG_EQUIP
|
||||
fin
|
||||
end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -659,10 +667,9 @@ def playerCombatChoose(pl)#0
|
|||
p = pl=>p_items
|
||||
while p
|
||||
if p->t_type == TYPE_WEAPON
|
||||
canChange = TRUE
|
||||
if p->b_flags & ITEM_FLAG_EQUIP
|
||||
pWeapon = p
|
||||
else
|
||||
canChange = TRUE
|
||||
fin
|
||||
fin
|
||||
p = p=>p_nextObj
|
||||
|
@ -828,7 +835,6 @@ def playerCombatTurn(pl)#1
|
|||
return 0
|
||||
is 'S'
|
||||
nAttacks = calcNumAtt(pl, FALSE, pWeapon) // FALSE=not melee
|
||||
displayf1("nAttacks=%d\n", nAttacks)
|
||||
for i = 1 to nAttacks
|
||||
for j = 1 to pl->b_shotChoice
|
||||
if nEnemiesFighting and pWeapon->b_clipCurrent
|
||||
|
@ -848,7 +854,7 @@ def playerCombatTurn(pl)#1
|
|||
break
|
||||
is 'C'
|
||||
// Choose a different weapon
|
||||
displayf3("\n%s switches to %s %s.\n", pl=>s_name, hisHerTheir(pl->c_gender), pWeapon=>s_name)
|
||||
displayf3("\n%s switches to %s %s.\n", pl=>s_name, hisHerTheir(pl->c_gender), pWeapon ?? pWeapon=>s_name :: "fists & feet")
|
||||
break
|
||||
is 'A'
|
||||
// Advance 5 feet as a party (i.e. only the first player)
|
||||
|
|
|
@ -2852,7 +2852,7 @@ def showPlayerSheet(num)#1
|
|||
anyInteraction = FALSE
|
||||
scriptEvent(@S_USE, sNameToUse)
|
||||
if !anyInteraction
|
||||
scriptDisplayStr("Nothing happened.")
|
||||
scriptDisplayStr("Nothing happens.")
|
||||
setTextCountdown
|
||||
fin
|
||||
fin
|
||||
|
@ -3512,6 +3512,7 @@ export def getStat(player, statName)#1
|
|||
is streqi(statName, @S_DODGING); return player->b_dodging
|
||||
is streqi(statName, @S_GOLD); return global=>w_gold
|
||||
is streqi(statName, @S_TIME); return global->b_hour
|
||||
is streqi(statName, @S_XP); return player=>w_curXP
|
||||
is streqi(statName, @S_SP); return player->b_skillPoints
|
||||
is streqi(statName, @S_PACK_SIZE); return player->b_packSize
|
||||
is streqi(statName, @S_BANK_BAL); return global=>w_bankBal
|
||||
|
|
Loading…
Reference in New Issue
Block a user