Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 25 additions & 7 deletions Language/english.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"nameUpper" : "NEMESIS COMMANDO",
"description" : "The <y>Nemesis Commando</c> is a flexible character with the firepower to deal with any situation. <y>Wound</c> enemies using <y>Blade of Cessation</c> to setup for devastating damage from your other abilities. Use <y>Tactical Dive</c> to weave in and out of melee range, and turn even the most dangerous situations in your favour.",
"endQuote": "..and so he left, carrying new sense of humanity within.",
"story": "<p>MY ORIGINAL OC DO NOT STEAL</c>"
"story": "<b>UNREGISTERED FIELD DATA LOG: DATA LAST MODIFIED ON [##090??!?]</c> \n<r>[ERROR 0x00000ce: Data Package Corrupted, viewing a restore point.]</c> \n\n<ul>[Entry 1] -</c> Patrol group just picked up a wounded straggler a few miles off from camp. Word going around is he “showed up out of nowhere,” (as if I'm buying that), what with nothing in the surrounding area to trace his origin. Regardless of the validity of their claims, a survivor's a survivor. As I'm writing this, we're carrying him back. He's certainly not making it easy on us, though, considering the sheer heft of his gear- he's lugging some unorthodox modifications to a standard Commando armor rig. It looks to be- or maybe was originally- the initial issue of the Mk. 1 model (even though I'm pretty sure they stopped producing those years ago?). \n\n<ul>[Entry 2] -</c> Update- buddy's got some scarily heavy artillery on hand for a Commando unit- a rocket launcher still warm to the touch and some almost certainly alien grenades- I sure as hell haven't seen anything like them. He’s out cold right now, and from what we can tell looking through his helmet he's well-battered. His left arm seems especially stiff- his hand's clamped shut around the handle of his vibroblade. Some of us tried to get a good look at it just now, but it's almost like his fist is fused to the damn thing. Amongst other things on his person, it's thoroughly coated in this crusted black.. substance. We don't know if it was the result of a fight between a few more survivors, or evidence for some kind of self defe??!0049### \n<r>[End of legible data.]</c> \n\n<ul>[Entry 2a] -</c> I dont know how much time I have left as im typing this it woke up and camp is DESTROYED people wont stop bleeding we dont even know if it was human with what it can do noone knows what to do now it went straight for Adrian \nwe dont even know what set it off??? what did WE do to deserve all of this??? why did that THING attack U!??!?##$0959090302???! \n<r>[End of legible data.]</c> \n\n<p>Th?e ga?dflies swarm thi?s nob?le beas?t as it gra?zes.\n\nYour plag??ue upon it?s surfa?ce wi?ll be undo?ne by the?se toiling hand?s.",
},
"nemesisMercenary" : {
"name" : "Nemesis Mercenary",
Expand All @@ -32,7 +32,21 @@
"name": "Technician",
"nameUpper": "TECHNICIAN",
"description": "The <y>Technician</c> is excellent at setting up and maintaining zones of enemy denial. <y>Forced Shutdown</c> can <y>forcibly lock down an area</c> when upgraded. <y>Upgrading</c> gadgets improves their effectiveness, but be careful when doing so in dangerous situations!",
"endQuote": "..and so he left, by switching the ship off and on again."
"endQuote": "..and so he left, by switching the ship off and on again.",
"story": "<ul>Passenger Details:\n<g>[Employee Class]\n\n<ul>Employee Details:</c>\nEmployee contracted to work on-site for the full duration of the scheduled voyage of the UES Contact Light, to perform maintenance on machinery should technical issues arise aboard the ship. Employee qualified with 6 years of hands-on experience in software and hardware engineering.\n\n<ul>Luggage & Equipment:</c>\nEmployee boarded with a Durarend welding spacesuit rated with strong vacuum resistance, and additionally leather and cloth attire made for planetary wear. Employee notified that clothes may tear in the case of a vacuum event. Security flagged the sizable wrench they held for appearing impractical for use while potentially dangerous. Upon questioning, the employee indicated that it was \"custom-built ... for the toughest jobs.\" Following procedure, the wrench was moved to an automated lockbox in loading bay 1a. Remaining inspection of carry-ons revealed several standard-issue wrenches, 3 color-coded USBs, a 2047 model GeForm Laptop, tool boxes, and a welding tool. USBs were inspected on company-owned QPuting Disposable Computer installed with ReoVirus Detector v1.6.2. No traces of malware were detected and stored files are UPG format containing blueprints of various devices. Employee permitted to pass with no further difficulties.\n\n<b>[SECURITY RECALL]</c>\n<ul>[Event T1]</c> Employee forcibly removed from cabin during liftoff preparations when refusing to leave after conversating with ship pilot for multiple hours.\n<ul>[Event T2]</c> Employee observed stealing sodas from a vending machine.\n<ul>[Event T3]</c> Automated lockdown originating in loading bay 4a resolved by employee.\n<ul>[Event T4]</c> Escape pod B-08 status shifted from ERROR to ALERT after the employee was requested by ship personnel to troubleshoot. Security personnel instructed to investigate.\n<ul>[Event T1a] Employee additionally reported to have tampered with cabin control panel to make it \"easier to cruise.\" Scheduled launch delayed and employee instructed to revert any modifications made.",
"id" : "Travel ID: 54E4F4C434F59474E454",
"departure" : "<y>Departure:</c>\nUES Shipping Dock 5,\nRedview,\nMars",
"arrival" : "<y>Destination:</c>\nUES Shipping Dock 0,\nRedview,\nMars"
},
"swapNemesis": {
"name": "Nemesis Survivors",
"nameUpper": "NEMESIS SURVIVORS",
"description": "Swap to the familiar yet twisted <r>Nemesis survivors.</c>"
},
"swapNormal": {
"name": "Normal Survivors",
"nameUpper": "NORMAL SURVIVORS",
"description": "Swap to the regular set of survivors."
}
},
"skill" : {
Expand Down Expand Up @@ -118,19 +132,23 @@
},
"technicianZ": {
"name": "Fine Tune",
"description": "Strike forward with a wrench for <y>210% damage.\n<y>Hitting gadgets</c> 3 times <b>upgrades them."
"description": "Strike forward with a wrench for <y>180% damage.\n<y>Hitting gadgets</c> 3 times <b>temporarily upgrades them</c> for 30 seconds."
},
"technicianZ2": {
"name": "Troubleshoot",
"description": "Throw a wrench forward, piercing up to 3 enemies for <y>100% damage.\n<y>Hitting gadgets</c> 3 times <r>temporarily <b>upgrades them."
"description": "Throw a wrench forward, piercing up to 3 enemies for <y>180% damage.\n<y>Hitting gadgets</c> 3 times <b>temporarily upgrades them</c> for 20 seconds."
},
"technicianX": {
"name": "Forced Shutdown",
"description": "Toss out a <y>stunning</c> bomb dealing <y>700% damage</c> on reactivation.\nPassively pulls in enemies when <b>upgraded."
"description": "Toss out a bomb dealing <y>400% damage</c> on reactivation.\n<y>Stuns</c> and passively pulls in enemies when <b>upgraded."
},
"technicianX2": {
"technicianXD": {
"name": "The Red Button",
"description": "Detonate the dropped bomb for <y>700% damage, stunning enemies."
"description": "Detonate the dropped bomb for <y>500% damage.</c>\n<y>Stuns</c> enemies when <b>upgraded."
},
"technicianX2": {
"name": "",
"description": ""
},
"technicianC": {
"name": "24/7 Energy",
Expand Down
48 changes: 5 additions & 43 deletions Misc/sharedObjects.lua
Original file line number Diff line number Diff line change
@@ -1,48 +1,5 @@
--Objects used in a lot of parts of the module

obj_sparks = Object.new(NAMESPACE, "sparks")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is there so much deleted code here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These two objects were finicky to work with due to the frame rate being very inconsistent for reasons unknown
I didn't want anyone using them

But now that I think about it, it's probably because it's using get_data which is now known to be buggy

obj_sparks:set_sprite(gm.constants.sSparks2)
obj_sparks:set_depth(1)
obj_sparks:onCreate(function(inst)
inst:get_data().frame_index = 0
inst.image_speed = 0.33
end)
obj_sparks:onStep(function(inst)
local data = inst:get_data()
data.frame_index = data.frame_index + inst.image_speed
inst.image_index = data.frame_index
if data.frame_index >= gm.sprite_get_number(inst.sprite_index) then
inst:destroy()
end
end)

obj_fading_sparks = Object.new(NAMESPACE, "fading_sparks")
obj_fading_sparks:set_sprite(gm.constants.sEfChestRain)
obj_fading_sparks:set_depth(1)
obj_fading_sparks:onCreate(function(inst)
local data = inst:get_data()
data.delay = 5 * 60
data.rate = 1 / 600
data.frame_index = 0
inst.image_speed = 0.2
end)
obj_fading_sparks:onStep(function(inst)
local data = inst:get_data()
local frames = gm.sprite_get_number(inst.sprite_index)
data.frame_index = data.frame_index + inst.image_speed
inst.image_index = math.min(inst.image_index, frames - 1)
if inst.image_index >= frames - 1 then
inst.image_index = frames - 1
data.delay = data.delay - 1
if data.delay <= 0 then
inst.image_alpha = inst.image_alpha - data.rate
if inst.image_alpha <= 0 then
inst:destroy()
end
end
end
end)

obj_sprite_layer = Object.new(NAMESPACE, "sprite_layer")
obj_sprite_layer:set_sprite(gm.constants.sEfChestRain)
obj_sprite_layer.obj_depth = 1
Expand All @@ -53,4 +10,9 @@ obj_sprite_layer:onStep(function(inst)
if not inst.parent or not Instance.exists(inst.parent) then
inst:destroy()
end
end)
obj_sprite_layer:onDraw(function(inst)
if inst.skinnable then
inst:actor_skin_skinnable_draw_self()
end
end)
70 changes: 29 additions & 41 deletions Misc/votvlibrary.lua
Original file line number Diff line number Diff line change
@@ -1,38 +1,40 @@
--All my functions! And sometimes some constants

--Check if a point is colliding with the stage
function is_point_colliding_stage(x, y)
local collision = gm.collision_point(x, y, gm.constants.pBlock, false, true)
function is_point_colliding_stage(x, y, actor)
local collision = actor:collision_point(x, y, gm.constants.pBlock, false, true)
if not collision or (type(collision) == "number" and collision < 0) then
return false
end
return true
end

--Same thing, but with an instance instead
function is_colliding_stage(inst, x, y)
return inst:is_colliding(gm.constants.pBlock, x or inst.x, y or inst.y)
end

--Move a point in a specified direction until it collides with the stage, or has reached the max amount
---90 is down, 270 up, 180 left, and 0/360 right
function move_point_contact_solid(x, y, angle, amount)
function move_point_contact_solid(x, y, angle, amount, actor)
amount = amount or 1000
local totalMoved = 0
local xx = math.cos(math.rad(angle))
local yy = math.sin(math.rad(angle))
while totalMoved <= amount do
while totalMoved < amount do
x = x + xx * 32
y = y + yy * 32
totalMoved = totalMoved + xx * 32 + yy * 32
if totalMoved > amount then
totalMoved = totalMoved + 32
if totalMoved >= amount then
x = x - xx * (totalMoved - amount)
y = y - yy * (totalMoved - amount)
break
end
if is_point_colliding_stage(x, y) then
if is_point_colliding_stage(x, y, actor) then
for i = 0, 31 do
x = x - xx
y = y - yy
if not is_point_colliding_stage(x, y) then
if not is_point_colliding_stage(x, y, actor) then
break
end
end
Expand All @@ -43,24 +45,25 @@ function move_point_contact_solid(x, y, angle, amount)
end

--Same as move_point_contact_solid, but stops after *exiting* terrain instead
function move_point_contact_air(x, y, angle, amount)
function move_point_contact_air(x, y, angle, amount, actor)
amount = amount or 1000
local totalMoved = 0
local xx = math.cos(math.rad(angle))
local yy = math.sin(math.rad(angle))
while totalMoved <= amount do
while totalMoved < amount do
x = x + xx * 32
y = y + yy * 32
totalMoved = totalMoved + xx * 32 + yy * 32
if totalMoved > amount then
totalMoved = totalMoved + 32
if totalMoved >= amount then
x = x - xx * (totalMoved - amount)
y = y - yy * (totalMoved - amount)
break
end
if not is_point_colliding_stage(x, y) then
if not is_point_colliding_stage(x, y, actor) then
for i = 0, 31 do
x = x - xx
y = y - yy
if is_point_colliding_stage(x, y) then
if is_point_colliding_stage(x, y, actor) then
x = x + xx
y = y + yy
break
Expand All @@ -72,16 +75,17 @@ function move_point_contact_air(x, y, angle, amount)
return x, y
end

--Same as move_point_contact_solid, but with an instance instead
function move_contact_solid(inst, angle, amount)
amount = amount or 1000
local totalMoved = 0
local xx = math.cos(math.rad(angle))
local yy = math.sin(math.rad(angle))
while totalMoved <= amount do
while totalMoved < amount do
inst.x = inst.x + xx * 32
inst.y = inst.y + yy * 32
totalMoved = totalMoved + xx * 32 + yy * 32
if totalMoved > amount then
totalMoved = totalMoved + 32
if totalMoved >= amount then
inst.x = inst.x - xx * (totalMoved - amount)
inst.y = inst.y - yy * (totalMoved - amount)
end
Expand All @@ -99,17 +103,17 @@ function move_contact_solid(inst, angle, amount)
return x, y
end


--Same as move_point_contact_air, but with an instance instead
function move_contact_air(inst, angle, amount)
amount = amount or 1000
local totalMoved = 0
local xx = math.cos(math.rad(angle))
local yy = math.sin(math.rad(angle))
while totalMoved <= amount do
while totalMoved < amount do
inst.x = inst.x + xx * 32
inst.y = inst.y + yy * 32
totalMoved = totalMoved + xx * 32 + yy * 32
if totalMoved > amount then
totalMoved = totalMoved + 32
if totalMoved >= amount then
inst.x = inst.x - xx * (totalMoved - amount)
inst.y = inst.y - yy * (totalMoved - amount)
end
Expand All @@ -129,11 +133,6 @@ function move_contact_air(inst, angle, amount)
return x, y
end

function move_in_direction(inst, angle, amount)
inst.x = inst.x + math.cos(math.rad(angle)) * amount
inst.y = inst.y + math.sin(math.rad(angle)) * amount
end

--Kinda useless but whatever... Feels better anyways
function get_tiles(x)
return (x or 1) * 32
Expand Down Expand Up @@ -162,19 +161,8 @@ function progress_achievement(achievement, value)
gm.achievement_add_progress(achievement.value, value)
end

function tableToString(t)
local function serialize(tbl, indent)
local str = ""
indent = indent or ""
for k, v in pairs(tbl) do
str = str .. indent .. k .. ": "
if type(v) == "table" then
str = str .. "\n" .. serialize(v, indent .. " ")
else
str = str .. tostring(v) .. "\n"
end
end
return str
end
return serialize(t)
--Simple, makes the attack not proc the damage number yellow
function setNoProc(attack_info)
attack_info.proc = false
attack_info.damage_color = Color.from_hex(0xC9B736)
end
Binary file added Sounds/Survivors/Technician/select.ogg
Binary file not shown.
Binary file modified Sounds/Survivors/Technician/shoot1.ogg
Binary file not shown.
Binary file added Sprites/Survivors/Technician/log.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/minea.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/mineb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/palette.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/portrait.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitPROV.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitS1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitS2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitS3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitS4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/portraitSmall.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitSmallPROV.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitSmallS1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitSmallS2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitSmallS3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/portraitSmallS4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/select.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/selectPROV.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/selectS1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/selectS2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/selectS3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/selectS4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/shoot1T_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Sprites/Survivors/Technician/shoot1T_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/shoot5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Sprites/Survivors/Technician/sparks4.png
Binary file added Sprites/Survivors/Technician/sparks5.png
Binary file modified Sprites/Survivors/Technician/turreta.png
Binary file modified Sprites/Survivors/Technician/turretashoot.png
Binary file modified Sprites/Survivors/Technician/turretb.png
Binary file removed Sprites/Survivors/Technician/turretexplosion.png
Diff not rendered.
Loading