Jump to content

Wyvard - The Cold-Blooded Cavalier


Recommended Posts

Wyvard the Cold-blooded Cavalier

"A fiery passion burneth within me!"
Hunger: 150 | Health: 150 | Sanity: 120

Download

 

* Can sacrifice hunger for heat.
* Sensitive to the cold.
* Follows a code of chivalry.


Wyvard is a challenging RoG character with many abilities revolving around temperature. He was originally a middle-aged man with a quixotic complex, but was transformed into a monster by Maxwell and banished to his world. Because of his transformation, he suffers from low sanity and a high sensitivity to temperature. Unlike other characters, Wyvard will take freezing and overheating damage at higher temperatures.

By pressing R, Wyvard can toggle his Dragon Fire ability. This will heat him up and produce light at the cost of quadrupling his hunger rate. The radius of Wyvard's light will increase with his temperature and while overheating, he will produce as much light as a torch.

Wyvard's temperature can have benefits or drawbacks depending on how hot or cold he is. At low temperatures Wyvard takes 25% more damage, moves 25% slower and deals 25% less damage. The inverse is also true; if Wyvard is nearly overheating he will take 25% less damage, move 25% faster and deal 25% more damage. But be warned, wearing winter gear is less effective for Wyvard!

During fights, Wyvard follows a strict code of chivalry. If he attacks a creature that is passive, sleeping, burning or frozen he will suffer a sanity penalty of 5. On the other hand, Wyvard suffers half the sanity penalty for being near monsters and gains a small sanity bonus for every aggressive creature killed. His code of chivalry does not apply to non-sentient structures, shadow creatures or the powerful giants.

Scripting:
Seiai

Beta Testing:
Ysulyan

Everything Else:
DragonDePlatino
 

Images


wyvard_by_dragondeplatino-d8xy8o6.png
wyvard_angles_by_dragondeplatino-d8xy8g2running_from_a_hound_by_dragondeplatino-

Link to comment
Share on other sites

i would suggest u ask in http://forums.kleientertainment.com/forum/52-kleislist/, thats the forum for such requests.

 

There are far fewer replies on those forums, so I figured this would be the best place to post. And really, this isn't a request so much as a trade. I'm not asking people to do my entire character with nothing in return. I'm willing to return an equal amount of work.

Link to comment
Share on other sites

well, following your logic with more pple being here than in kleislist, u shouldnt be here either, because there are more pple in the dont starve together forums. :-) or maybe just try kleislist, because pple that look for artists go there^^

Link to comment
Share on other sites

I'm sorry fellow dragon, but alas I am not skilled in the arts of scripting.

Perhaps you should PM certain skilled people for their help.
You could probably also browse GitHub? I believe there are templates for many scripts that you could salvage...

Link to comment
Share on other sites

@DragonDePlatino

i guess ill help u(onesided, i dont need an artist).

can u upload his prefab and the modmain here?

and can the dragonfire ability just be an item? clicking the hungermeter sounds like something that would be incompatible with any interfacemod. just something like a "dragonpendant" or even an abstract item like "dragonsoul", it doesnt even have to be equipable, it may just be in your inventory and u click it to activate/deactivate the effect.

as for the effect itself, i guess it should just work pretty much the same as the regular campfire with, the addition of "He may also ignite attacking foes and turn darts into fire darts when he shoots them."?

Link to comment
Share on other sites

@Seiai

It seems my patience has paid off! Thanks for offering to help, Seiai.
 
I've gone ahead and PM'd you the entire mod. As for the Dragon Fire ability...I'm really adverse to making it a usable item, but I can understand the compatibility issues. As a compromise, what if the Dragon Fire ability were toggled by clicking Wyvard? That way, an ability you naturally have isn't dependent on an inventory item. It'll help reduce inventory clutter, too.
 
But for now, let's focus on the simpler things and take them one step at a time. The first priority for Wyvard is his temperature sensitivity. He should heat up and cool down twice as quickly as the other characters. This will make him more difficult to use, but it will balance out his Dragon Fire ability. Once his temperature sensitivity is finished, I'll go ahead and test him for a bit to see if 2x is too much or too little.
 
Also, thanks for doing this for nothing! If you ever start development of your own character mod, I'll gladly return the favor.

Link to comment
Share on other sites

@DragonDePlatino

Yeah, no, my antivirus went amok when i tried to open that page. pls just post the modmain and and the prefab of your character here, i dont need the artwork and the speechfile.(and other pple can help u too)

Clicking Wyvard would become a problem when moving around with the mouse and maybe also with using items on him. if u dont like him to have an "item" i would refer again to the idea with it being a "dragonsoul" and maybe even make him unable to drop it or let him loose health if he does or something, to make it more immersive. a lot of characters have irreplaceable items, this one would even be a pretty strong one, so its worth the slot.

as for the temperaturesensitivity: i had a look into it, and theres a few ways to tackle it, depends how it should affect gameplay:

the by far easiest way would be to give him an absolute insulation penalty. this means that his total insulation will be reduced by a fixed value, making weak insulating items like earmuffs allmost useless and stronger items just abit weaker.

just add this

inst:AddComponent("Temperature")inst.components.temperature.inherentinsulation = -50inst.components.temperature.inherentsummerinsulation = -50
somewhere near the end of your local fn in characters prefab.

another way would be to reduce the insulation of all items by a percentage, i didnt look much into that, but there should be a way to do this without too much trouble.

or make his temperature change twice as fast, this would mean, that if u would be temperaturestable as a normal character, u are also with wyvard, but if your temperature is changing, it changes faster, which would only make dangerous situation even more dangerous( guess most pple would just underestimate temperature summer, especially in fights in summer and die to it). Codewise this might also not be the ideal way.

also, i already have my own mod, but if i ever feel for better artwork, ill just invest the time myself, so no ty :-)

http://forums.kleientertainment.com/topic/52855-custom-character-kerrigan-the-queen-of-blades/

Link to comment
Share on other sites

@Seiai

This seems like a pretty good solution to me! This isn't exactly what I had in mind, but reducing Wyvard's base insulation is such an elegantly simple solution. I'll go ahead and give this a shot and report back after I've tested and tweaked this for a bit. College finals are coming up, so it might be a while before I post here again.

Sigh...I still really, really don't like the idea of an item controlling an ability he should naturally have. There are also weird implications in case he looses the item while his ability is still active. However, I'll probably just have to settle with this solution unless anyone else can introduce an alternative. A sort of magical brace or brooch might work well for this.

Link to comment
Share on other sites

@DragonDePlatino

i had a look into the thing with the abilities and found a mod with hotkeys:

add this somewhere near the end of the main function of your characters prefab:

inst.entity:AddLight()        inst.Light:Enable(false)        inst.Light:SetRadius(2)        inst.Light:SetFalloff(0.7)        inst.Light:SetIntensity(.65)        inst.Light:SetColour(223/255, 208/255, 69/255)
and this to your modmain somewhere near the end:

GLOBAL.TheInput:AddKeyDownHandler(GLOBAL.KEY_R, function()	local player = GLOBAL.GetPlayer()		if player and player.prefab=="wyvard" then --if your characters prefab is called wyvard			local TheInput = GLOBAL.TheInput	if not GLOBAL.IsPaused() and not TheInput:IsKeyDown(GLOBAL.KEY_CTRL) and not TheInput:IsKeyDown(GLOBAL.KEY_SHIFT) then          if player.Light:IsEnabled() then player.Light:Enable(false) else  player.Light:Enable(true) end 	end	endend)
and viola, u have a human flashlight by pressing the R button. from there we can expand to the additional effects.

and please upload your modmain and your character's prefab here already, so i can be a bit more specific. there shouldnt really be anything in there, that anyone can steal, if u are worried about that...

Link to comment
Share on other sites

@Seiai
 
Oh! My bad! I forgot I needed to post those two files. Here they are. I tried entering them into my post like you did, but that particular BBCode never seems to work for me. Anyways, I tried out the code and it worked like charm! All it needs is a bit of tweaking and it'll be perfect. Here's what I have in mind...

When you press R to toggle the aura, Wyvard performs an animation. If the aura has been toggled on, it's Wolfgang's mighty animation and and the fireball SFX. If the aura is toggled off, it's Wolfgang's wimpy animation and the extinguish SFX. While the aura is active, Wyvard gives off a constant amount of heat (90 degrees) and a light radius of ((Current temperature / max temperature) * (Torch light radius)). For now, disregard those weird effects like igniting items and shooting darts. The constant heat and scaling light is what's important.

Also, on the subject of temperature sensitivity, I'm not sure the current system will work because it doesn't influence Wyvard's temperature more quickly when he has nothing equipped. The wiki's page on freezing might have what you need, though. Apparently, a character's temperature sensitivity is controlled by their ambient delta. If you can find a way to double that delta for Wyvard, it'll make him heat up and cool down twice as quickly.

modmain.lua

wyvard.lua

Link to comment
Share on other sites

Hey, progress update here! Development on Wyvard has been going smoothly and all of his temperature-based abilities are in place. They might need some balancing, but the general gist of them are working. I wouldn't have been able to do any of this without Seiai, and it's been great privately collaborating with him so far.

My current plan is to finish up the last of Wyvard's abilities, test the character, then send out the character to three beta testers before releasing him. If you're interested in beta-testing this character for balancing and feedback, post below and I'll sign you up. The first three people to ask will receive a copy of the mod once it's finished.

Link to comment
Share on other sites

@Vecto0r

@Ysulyan

Thanks! I've gone ahead and added you both to my beta testing list. Once finals are up and I find some time to alpha test the mod (to find crashes and big balancing issues) I'll send you both a PM.

I shall do my best to test the mod and feedback you with any bugs I see, friend. Looking forward to it!

Link to comment
Share on other sites

Small Update:

Progress on Wyvard has been going very well. Summer has started for me, so I'll be able to work much more diligently on him. My current goal is to survive an entire year with him to see if there are any balancing issues, then release him for beta-testing. Compound the fact that he's RoG-exclusive and I don't have much RoG experience, this might take a while.

So far, I've noticed the penalties of his Dragon Fire ability are far too steep. A 1 hunger/second penalty discourages using the ability except in emergencies, so I tweaked that a bit and lowered his initial stats to compensate. My goal here is to have a character more difficult to play than Wilson, but easier to play than Wes. Also, we've got one beta-testing slot left! If anyone's interested on taking that up go ahead and drop a reply below.

Link to comment
Share on other sites

goodnewseveryone.png

After getting sidetracked a bit, I finally found the time to finish up this character. He's currently DS-only, but if there's enough demand I might ask Seiai to give him DST support. If you've got any complaints or feedback, go ahead and leave it here or in the Steam workshop.

Link to comment
Share on other sites

@DragonDePlatino,

wyvard.zip

here's the scripts i had to change for DST. i only did some minimal testing so far, to look for crashes. u said u did all the DST-related artwork and speech, so u assume u have stuff like the avatar and ghost-anim-file?

temperature behaves a bit different in DST, so u might have to rebalance him again for winter and summer. and now that we are in DST, shall we put in the heatercomponent again, so u can warm up other players with your ability?

Link to comment
Share on other sites

@Seiai

 

Hey, you did a really great job! Wyvard looks just like he does in the DS version. It's a little strange how he takes his sanity penalty, but I guess that's a limitation of DST.

One thing, though. His bloom effect doesn't seem to be working properly for me. Could you please look into that for me? I've attached a DST version of Wyvard with my assets and your scripting. Hopefully we'll be able to sort this out.

wyvard_dst.zip

Link to comment
Share on other sites

@DragonDePlatino,

local function violate(inst,data)local act = {}act.doer = instact.target = data.targetlocal penaltyline =    {"I violat'd my chivalrous code!",                     "Wyvard, what have thee becometh?",                     "What an unchivalrous act!",                     "A knight ne'er strikes a weaker foe!",                     "What a cowardly way to fight!"}local justiceline = {"Have at thee, murderous scounderel!",                     "I shall avenge my bretheren, murderer!"}local function battlecrydown(act)    if act.doer.components.combat then        act.doer.components.combat.nextbattlecrytime= GetTime() + (act.doer.components.combat.battlecryinterval        and act.doer.components.combat.battlecryinterval or 5)+math.random()*3     endend                      if act.doer.prefab == "wyvard" and act.target.components.combat then        if ((act.target.components.sleeper and act.target.components.sleeper:IsAsleep())			or (act.target.components.burnable and act.target.components.burnable:IsBurning())			or (act.target.components.freezable and act.target.components.freezable:IsFrozen())			or (act.target.components.combat.target and act.target.components.combat.target ~= act.doer													and not act.target.components.combat.target:HasTag("chester")))			or  (not act.target.components.combat.target)			and (not act.target:HasTag("structure"))			and (not act.target:HasTag("epic"))			and (not act.target:HasTag("shadow"))			and (not act.target:HasTag("wall"))			and (not act.target:HasTag("playerghost"))			and (not act.target.hasKilledPlayer)			then act.doer.components.sanity:DoDelta(-5)				if act.doer.components.talker then					battlecrydown(act)					act.doer.components.talker:Say(penaltyline[math.ceil(math.random()*#penaltyline)], 2.5, true)				end		elseif act.target.hasKilledPlayer then				if act.doer.components.talker then					battlecrydown(act)					act.doer.components.talker:Say(justiceline[math.ceil(math.random()*#justiceline)], 2.5, true)				end		end    endend
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...