From e6f53c639a11490b6525635fafa890e6c67088f6 Mon Sep 17 00:00:00 2001 From: DarkGod <darkgod@net-core.org> Date: Thu, 25 Jul 2013 20:29:13 +0200 Subject: [PATCH] Wards are now correctly colored by damage type still not done .. --- game/engines/default/engine/DamageType.lua | 11 +++++ game/modules/tome/data/gfx/particles/ward.lua | 6 +-- .../data/gfx/particles_images/shieldimg.png | Bin 0 -> 2722 bytes game/modules/tome/dialogs/Birther.lua | 38 +++++++++++------- 4 files changed, 38 insertions(+), 17 deletions(-) create mode 100644 game/modules/tome/data/gfx/particles_images/shieldimg.png diff --git a/game/engines/default/engine/DamageType.lua b/game/engines/default/engine/DamageType.lua index c6d8e0f36b..8244475d15 100644 --- a/game/engines/default/engine/DamageType.lua +++ b/game/engines/default/engine/DamageType.lua @@ -51,6 +51,17 @@ function _M:newDamageType(t) t.type = t.type:upper() t.projector = t.projector or self.defaultProjector + if not t.color and type(t.text_color) == "string" then + local ts = t.text_color:toTString() + if type(ts[2]) == "table" and ts[2][1] == "color" then + if type(ts[2][2]) == "string" then + t.color = colors[ts[2][2]] + elseif type(ts[2][2]) == "string" then + t.color = {r=ts[2][2], g=ts[2][3], b=ts[2][4]} + end + end + end + table.insert(self.dam_def, t) self[t.type] = #self.dam_def end diff --git a/game/modules/tome/data/gfx/particles/ward.lua b/game/modules/tome/data/gfx/particles/ward.lua index 570619f30f..f26932e998 100644 --- a/game/modules/tome/data/gfx/particles/ward.lua +++ b/game/modules/tome/data/gfx/particles/ward.lua @@ -34,7 +34,7 @@ return { generator = function() local da = math.rad(rng.range(0, 360)) return { life = core.particles.ETERNAL, - size = rng.range(3,8), sizev = 0, sizea = 0, + size = rng.range(9,12), sizev = 0, sizea = 0, x = r * math.cos(a) + dr * math.cos(da), xv = 0, xa = 0, y = r * math.sin(a) + dr * math.cos(da), yv = 0, ya = 0, @@ -44,10 +44,10 @@ return { generator = function() r = color.r/255, rv = 0, ra = 0, g = color.g/255, gv = 0, ga = 0, b = color.b/255, gv = 0, ga = 0, - a = rng.range(230, 225)/255, av = 0, aa = 0, + a = rng.range(130, 165)/255, av = 0, aa = 0, } end, }, function(self) if first then self.ps:emit(10) first = false end end, -10 +10, "particles_images/shieldimg" diff --git a/game/modules/tome/data/gfx/particles_images/shieldimg.png b/game/modules/tome/data/gfx/particles_images/shieldimg.png new file mode 100644 index 0000000000000000000000000000000000000000..56049ab03095f20d860ba2eb8d05611c5bf71ee2 GIT binary patch literal 2722 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/dialogs/Birther.lua b/game/modules/tome/dialogs/Birther.lua index 5cca8e2cc5..bc9155dec4 100644 --- a/game/modules/tome/dialogs/Birther.lua +++ b/game/modules/tome/dialogs/Birther.lua @@ -247,6 +247,7 @@ function _M:atEnd(v) self:setTile(self.has_custom_tile.f, self.has_custom_tile.w, self.has_custom_tile.h, true) self.actor.has_custom_tile = self.has_custom_tile.f end + self:resetAttachementSpots() -- Prevent the game from auto-assigning talents if necessary. if (not config.settings.tome.autoassign_talents_on_birth) and not game.state.birth.always_learn_birth_talents then for _, d in pairs(self.descriptors) do @@ -1031,6 +1032,28 @@ function _M:fakeEquip(v) end end +function _M:resetAttachementSpots() + self.actor.attachement_spots = nil + if self.has_custom_tile then return end + + local dbr = self.birth_descriptor_def.race[self.descriptors_by_type.race or "Human"] + local dr = self.birth_descriptor_def.subrace[self.descriptors_by_type.subrace or "Cornac"] + local ds = self.birth_descriptor_def.sex[self.descriptors_by_type.sex or "Female"] + + local moddable_attachement_spots = dr.moddable_attachement_spots or dbr.moddable_attachement_spots + if moddable_attachement_spots then + local base = moddable_attachement_spots.base + local b = moddable_attachement_spots.all + if not b then b = self.actor.female and moddable_attachement_spots.female or moddable_attachement_spots.male end + local t = {} + self.actor.attachement_spots = t + for kind, d in pairs(b) do + t[kind] = {} + for o, p in pairs(d) do t[kind][o] = p / base end + end + end +end + function _M:setTile(f, w, h, last) self.actor:removeAllMOs() if not f then @@ -1045,24 +1068,10 @@ function _M:setTile(f, w, h, last) self.actor.moddable_tile = dr.copy.moddable_tile self.actor.moddable_tile_base = dr.copy.moddable_tile_base self.actor.moddable_tile_ornament = dr.copy.moddable_tile_ornament - self.actor.attachement_spots = nil - local moddable_attachement_spots = dr.moddable_attachement_spots or dbr.moddable_attachement_spots - if moddable_attachement_spots then - local base = moddable_attachement_spots.base - local b = moddable_attachement_spots.all - if not b then b = self.actor.female and moddable_attachement_spots.female or moddable_attachement_spots.male end - local t = {} - self.actor.attachement_spots = t - for kind, d in pairs(b) do - t[kind] = {} - for o, p in pairs(d) do t[kind][o] = p / base end - end - end end else self.actor.make_tile = nil self.actor.moddable_tile = nil - self.actor.attachement_spots = nil if h > w then self.actor.image = "invis.png" self.actor.add_mos = {{image=f, display_h=2, display_y=-1}} @@ -1072,6 +1081,7 @@ function _M:setTile(f, w, h, last) end self.has_custom_tile = {f=f,w=w,h=h} end + self:resetAttachementSpots() self:applyCosmeticActor() -- GitLab