Some ideas for a monkish class.
Moderator: Moderator
Re: Some ideas for a monkish class.
Given the spin away from chi and all that I'd suggest a name change. The current abilities simply don't say "monk". "Martial artist" might be better, or maybe even something like "Brawler".
Re: Some ideas for a monkish class.
My current version is named Martial Artist. I like brawler too though... hmmm.Grey wrote:Given the spin away from chi and all that I'd suggest a name change. The current abilities simply don't say "monk". "Martial artist" might be better, or maybe even something like "Brawler".
-
- Wyrmic
- Posts: 249
- Joined: Sun Aug 15, 2004 1:19 am
- Location: Plainville, CT
Re: Some ideas for a monkish class.
I also like the more generic sounding Brawler, which fits better with a medieval fantasy world anyway.
"I am the cat that walks by himself. All ways are alike to me."
--Rudyard Kipling, "The Cat That Walked By Himself"
--Rudyard Kipling, "The Cat That Walked By Himself"
Re: Some ideas for a monkish class.
What's wrong with Martial Artist? Savate was developed in France; their are numerous martial styles on the Indian sub-continent; Brazil has Capoeira; there is Boxing, wrestling (of whatever form) and so on.
I suppose what I am trying to say is that the martial arts are a universal constant throughout human civilisation... So why call them something different?
Unless of course it is a flavour thing...
I suppose what I am trying to say is that the martial arts are a universal constant throughout human civilisation... So why call them something different?
Unless of course it is a flavour thing...
Regards
Jon.
Jon.
-
- Wyrmic
- Posts: 249
- Joined: Sun Aug 15, 2004 1:19 am
- Location: Plainville, CT
Re: Some ideas for a monkish class.
Absolutely nothing's wrong with Martial Artist at all. It's just a personal preference on my part is all.
"I am the cat that walks by himself. All ways are alike to me."
--Rudyard Kipling, "The Cat That Walked By Himself"
--Rudyard Kipling, "The Cat That Walked By Himself"
Re: Some ideas for a monkish class.
I think "Brawler" sounds cooler, though "Martial Artist" better defines the class.
Re: Some ideas for a monkish class.
Your comments are very understandable and I didn't realize that this was going to be a stamina based class. I have two humble requests:
1. Make the combinations still work even if the character is holding a weapon.
2. Would you consider adding stamina based katas if I coded them?
Thanks for making a great new class.
1. Make the combinations still work even if the character is holding a weapon.
2. Would you consider adding stamina based katas if I coded them?
Thanks for making a great new class.
Re: Some ideas for a monkish class.
aberk wrote:Your comments are very understandable and I didn't realize that this was going to be a stamina based class. I have two humble requests:
1. Make the combinations still work even if the character is holding a weapon.
2. Would you consider adding stamina based katas if I coded them?
Thanks for making a great new class.
To give you some idea if what I've got and the theme of the class here's a sample talent tree. The grappling tree is just as focused on unarmed attacks as are the finishing strikes (uppercut, spinning backfist, haymaker... these aren't weapon finishers). If you want to code some weapon kata trees and borrow some stuff from the martial-artist (or brawler) to make more of an eastern monk feeling class or a stance based weapons fighter that uses some unarmed combat be my guest (hopefully the code will be in b22). I think the grappling and combo system I've worked up is sound and could work for a number of different martial arts based classes.
But I don't feel that weapons or weapon katas really fit the theme of the class I'm working on currently and right now every damage talent I've coded is based off unarmed damage or strength.
Code: Select all
newTalent{
name = "Striking Stance",
type = {"unarmed/unarmed-other", 1},
mode = "sustained",
hide = true,
points = 1,
cooldown = 12,
tactical = { BUFF = 2 },
type_no_req = true,
getCriticalPower = function(self, t) return 10 + self:getDex(20) end,
getDamage = function(self, t) return 20 + self:getDex(20) end,
activate = function(self, t)
cancelStances(self)
local ret = {
critpower = self:addTemporaryValue("combat_critical_power", t.getCriticalPower(self, t)),
}
return ret
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("combat_critical_power", p.critpower)
return true
end,
info = function(self, t)
local critpower = t.getCriticalPower(self, t)
local damage = t.getDamage(self, t)
return ([[Increases your critical damage multiplier by %d%% and the damage multiplier of your bareknuckle and kick boxing talents by %d%%.
The bonuses will scale with the Dexterity stat.]]):
format(critpower, damage)
end,
}
newTalent{
name = "Rushing Strike",
type = {"unarmed/bareknuckle-boxing", 1},
require = mart_dex_req1,
points = 5,
random_ego = "attack",
cooldown = 6,
message = "@Source@ throws a rushing punch!",
range = function(self, t) return 2 + math.ceil(self:getTalentLevel(t)/2) end,
stamina = 8,
tactical = { ATTACK = 2, DISABLE = 2, CLOSEIN = 2 },
requires_target = true,
getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.8, 1.4) + getStrikingStyle(self, dam) end,
getDuration = function(self, t) return 1 + math.ceil(self:getTalentLevel(t)) end,
-- Learn the appropriate stance
on_learn = function(self, t)
if not self:knowTalent(self.T_STRIKING_STANCE) then
self:learnTalent(self.T_STRIKING_STANCE, true)
end
end,
on_unlearn = function(self, t)
if not self:knowTalent(t) then
self:unlearnTalent(self.T_STRIKING_STANCE)
end
end,
action = function(self, t)
if self:attr("never_move") then game.logPlayer(self, "You can not do that currently.") return end
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
if not x or not y or not target then return nil end
if math.floor(core.fov.distance(self.x, self.y, x, y)) > self:getTalentRange(t) then return nil end
-- bonus damage for charging
local charge = math.floor((core.fov.distance(self.x, self.y, x, y)) -1) / 5
-- do the rush
local l = line.new(self.x, self.y, x, y)
local tx, ty = self.x, self.y
lx, ly = l()
while lx and ly do
if game.level.map:checkAllEntities(lx, ly, "block_move", self) then break end
tx, ty = lx, ly
lx, ly = l()
end
local ox, oy = self.x, self.y
self:move(tx, ty, true)
if config.settings.tome.smooth_move > 0 then
self:resetMoveAnim()
self:setMoveAnim(ox, oy, 8, 5)
end
-- force stance change
if target and not self:isTalentActive(self.T_STRIKING_STANCE) then
self:forceUseTalent(self.T_STRIKING_STANCE, {ignore_energy=true, ignore_cd = true})
end
-- break grabs
self:breakGrapples()
if math.floor(core.fov.distance(self.x, self.y, x, y)) == 1 then
local hit = self:attackTarget(target, nil, t.getDamage(self, t) + charge, true)
-- Try to stun !
if hit then
self:buildCombo()
if target:checkHit(self:combatAttackStr(), target:combatPhysicalResist(), 0, 95, 5 - self:getTalentLevel(t) / 2) and target:canBe("stun") then
target:setEffect(target.EFF_STUNNED, t.getDuration(self, t), {})
else
game.logSeen(target, "%s resists the stun!", target.name:capitalize())
end
end
end
return true
end,
info = function(self, t)
local duration = t.getDuration(self, t)
local damage = t.getDamage(self, t) * 100
return ([[Attacks the target with a vicious rushing strike that deals %d%%. If the target is at range you'll rush towards them and deal 20%% bonus damage per tile traveled. If the attack hits, the target may be stunned for %d turns.
This attack will remove any grapples you're maintaining.
The stun success chance will scale with the strength stat.
Performing this attack will switch your stance to Striking Stance and earn one combo point if the blow connects.]])
:format(damage, duration)
end,
}
newTalent{
name = "Double Jab",
type = {"unarmed/bareknuckle-boxing", 2},
require = mart_dex_req2,
points = 5,
random_ego = "attack",
cooldown = 3,
stamina = 8,
message = "@Source@ throws two quick jabs.",
tactical = { ATTACK = 2 },
requires_target = true,
getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.3, 0.7) + getStrikingStyle(self, dam) end,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
if not x or not y or not target then return nil end
if math.floor(core.fov.distance(self.x, self.y, x, y)) > 1 then return nil end
-- breaks active grapples if the target is not grappled
if target:isGrappled(self) then
grappled = true
else
self:breakGrapples()
end
local hit1 = self:attackTarget(target, nil, t.getDamage(self, t), true)
local hit2 = self:attackTarget(target, nil, t.getDamage(self, t), true)
if hit1 then
self:buildCombo()
end
if hit2 then
self:buildCombo()
end
return true
end,
info = function(self, t)
local damage = t.getDamage(self, t) * 100
return ([[Two quick left jabs that deal %d%% damage each.
Each jab that connects will earn one combo point.]])
:format(damage)
end,
}
newTalent{
name = "Body Shot",
type = {"unarmed/bareknuckle-boxing", 3},
require = mart_dex_req3,
points = 5,
random_ego = "attack",
cooldown = 8,
stamina = 10,
message = "@Source@ throws a body shot.",
tactical = { ATTACK = 2, DISABLE = 2 },
requires_target = true,
getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.1, 1.5) + getStrikingStyle(self, dam) end,
getDrain = function(self, t) return self:getTalentLevel(t) * 10 end,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
if not x or not y or not target then return nil end
if math.floor(core.fov.distance(self.x, self.y, x, y)) > 1 then return nil end
-- breaks active grapples if the target is not grappled
if target:isGrappled(self) then
grappled = true
else
self:breakGrapples()
end
local hit = self:attackTarget(target, nil, t.getDamage(self, t), true)
if hit then
target:incStamina(- t.getDrain(self, t))
self:buildCombo()
end
return true
end,
info = function(self, t)
local damage = t.getDamage(self, t) * 100
local drain = t.getDrain(self, t)
return ([[A punch to the body that deals %d%% damage and drains %d of the target's stamina.
If the blow connects it will earn one combo point.]])
:format(damage, drain)
end,
}
newTalent{
name = "Flurry of Fists",
type = {"unarmed/bareknuckle-boxing", 4},
require = mart_dex_req4,
points = 5,
random_ego = "attack",
cooldown = 24,
stamina = 15,
message = "@Source@ lashes out with a flurry of fists.",
tactical = { ATTACK = 2 },
getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.4, 1) + getStrikingStyle(self, dam) end,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
if not x or not y or not target then return nil end
if math.floor(core.fov.distance(self.x, self.y, x, y)) > 1 then return nil end
-- breaks active grapples if the target is not grappled
if target:isGrappled(self) then
grappled = true
else
self:breakGrapples()
end
local hit1 = self:attackTarget(target, nil, t.getDamage(self, t), true)
local hit2 = self:attackTarget(target, nil, t.getDamage(self, t), true)
local hit3 = self:attackTarget(target, nil, t.getDamage(self, t), true)
if hit1 then
self:buildCombo()
end
if hit2 then
self:buildCombo()
end
if hit3 then
self:buildCombo()
end
return true
end,
info = function(self, t)
local damage = t.getDamage(self, t) * 100
return ([[Lashes out at the target with three quick punches that each deal %d%% damage.
Each punch that connects will earn one combo point.]])
:format(damage)
end,
}
Re: Some ideas for a monkish class.
I understand. Do you need a class description?
Re: Some ideas for a monkish class.
Code: Select all
desc = {
"Rather a pit-fighter, a boxer, or just a practitioner the brawler has learned to use his body and armored hands as weapons just as deadly as any blade.",
"Many of the brawler's abilities will earn combo points which they can use on finishing moves that will have added effect.",
"The unarmed fighting styles the brawler uses rely on maneuverability and having both hands available, as such they may not be practiced in massive armor or while a weapon or shield is equipped.",
"Their most important stats are: Strength, Dexterity, and Cunning",
"#GOLD#Stat modifiers:",
"#LIGHT_BLUE# * +3 Strength, +3 Dexterity, +0 Constitution",
"#LIGHT_BLUE# * +0 Magic, +0 Willpower, +3 Cunning",
},


Now weapons katas could be incorported into these talents with an over ride but right now they check that the class isn't using weapons because jabbing someone with a sword equipped or wrapping them up in a clinch just doesn't make sense. The advanced kicking tree though and the tactical trees are both well suited to weapon users (I'm actually going to see how DG feels about giving rogues the tactical tree).
Re: Some ideas for a monkish class.
Code: Select all
desc = {
"The ravages of the Spellblaze stretched armies thin and left many unprotected. Not everyone could afford the luxury of a weapon.",
"Without steel or iron, poor communities of all races turned to the strength of their own bodies for defense against the darkness.",
"The occupation known as brawler still exists today, and some of these unique warriors have even formed one basket orders, their purpose as yet unknown.",
"Rather a pit-fighter, a boxer, or just a practitioner the brawler has learned to use his body and armored hands as weapons just as deadly as any blade.",
"Many of the brawler's abilities will earn combo points which they can use on finishing moves that will have added effect.",
"The unarmed fighting styles the brawler uses rely on maneuverability and having both hands available, as such they may not be practiced in massive armor or while a weapon or shield is equipped.",
"Their most important stats are: Strength, Dexterity, and Cunning",
"#GOLD#Stat modifiers:",
"#LIGHT_BLUE# * +3 Strength, +3 Dexterity, +0 Constitution",
"#LIGHT_BLUE# * +0 Magic, +0 Willpower, +3 Cunning",
},
Re: Some ideas for a monkish class.
I like it. I'll see how DG feels about how it fits in with the lore
It might be to long though I'll have to see how it fits into the character selection screen.

Re: Some ideas for a monkish class.
I made a typo. "One basket" should be “monastic."
Re: Some ideas for a monkish class.
Weird typo :P
It's definitely not too long a description - most others are longer.
It's definitely not too long a description - most others are longer.
Re: Some ideas for a monkish class.
I use voice software to access my computer. You should see the wacky typos I come up with. What did Dark God say about the lore?