weapons probably work

This commit is contained in:
the me 2022-08-15 19:58:13 -07:00
parent a537ea5cf2
commit 48c1a3af7a
2 changed files with 42 additions and 3 deletions

View File

@ -18,6 +18,29 @@ function unitstat(val_, name_, fullname_, desc_, replacements_) : stat(name_, fu
modifier = 0;
}
function statmod(stat__, amount_, operation_=add) {
name = stat__.name;
stat_ = stat__;
amount = amount_;
operation = operation_;
}
function add(val1, val2) {
return val1*val2;
}
function sub(val1, val2) {
return val1*val2;
}
function mult(val1, val2) {
return val1*val2;
}
function divide(val1, val2) {
return val1*val2;
}
function modulo(val1, val2) {
return val1*val2;
}
nu stat("hp", "health", "vitality");
nu stat("str", "strength", "physical power");
nu stat("def", "defense", "physical defense");

View File

@ -1,9 +1,13 @@
global.weapons = {};
#macro wp global.weapons
function weapon(name_, description_, statmod_) constructor {
function weapon(name_, description_, statmods) constructor {
name = name_;
description = description_;
statmod = statmod_;
modifiers = {};
var i;
for (i=0; i<array_length(statmods); i++) {
modifiers[$statmods[i].name] = statmods[i];
}
}
function c_addweapon(target, weapon_) {
@ -24,5 +28,17 @@ function c_modifierreset(target) {
}
function c_wpeval(target, weapon_) {
var lads = variable_struct_get_names(target.data);
var dudes = variable_struct_get_names(weapon_.modifiers);
var i;
for (i=0; i<array_length(dudes); i++) {
if array_contains(lads, dudes[i]) {
target.data[$dudes[i]].val = weapon_[$dudes[i]].operation(target.data[$dudes[i]].val, weapon_[$dudes[i]].val);
}
}
}
function c_statexists(target, statstring) {
var dudes = variable_struct_get_names(target.data);
return array_contains(dudes, statstring);
}