mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Added support for multiple spell UI elements.
This means that Mutant Powers are no longer filed under spells. It also lays groundwork for Ling and Vamp powers being put into their own categories.
This commit is contained in:
@@ -94,6 +94,7 @@
|
||||
#define ui_construct_pull "14:28,2:10" //above the zone_sel icon
|
||||
|
||||
#define ui_spell_master "14:16,14:16"
|
||||
#define ui_genetic_master "14:16,12:16"
|
||||
|
||||
//Pop-up inventory
|
||||
#define ui_shoes "2:8,1:5"
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
icon_state = "wiz_spell_ready"
|
||||
var/list/obj/screen/spell/spell_objects = list()
|
||||
var/showing = 0
|
||||
|
||||
var/open_state = "master_open"
|
||||
var/closed_state = "master_closed"
|
||||
|
||||
screen_loc = ui_spell_master
|
||||
|
||||
var/mob/spell_holder
|
||||
@@ -29,7 +33,7 @@
|
||||
O.handle_icon_updates = 0
|
||||
showing = 0
|
||||
overlays.len = 0
|
||||
overlays.Add("master_closed")
|
||||
overlays.Add(closed_state)
|
||||
else if(forced_state != 1)
|
||||
var/temp_loc = screen_loc
|
||||
|
||||
@@ -48,7 +52,7 @@
|
||||
update_spells(1)
|
||||
showing = 1
|
||||
overlays.len = 0
|
||||
overlays.Add("master_open")
|
||||
overlays.Add(open_state)
|
||||
|
||||
/obj/screen/movable/spell_master/proc/add_spell(var/spell/spell)
|
||||
if(!spell) return
|
||||
@@ -63,7 +67,7 @@
|
||||
var/obj/screen/spell/newscreen = new
|
||||
|
||||
newscreen.spell = spell
|
||||
if(!spell.override_base)
|
||||
if(!spell.override_base) //if it's not set, we do basic checks
|
||||
if(spell.spell_flags & CONSTRUCT_CHECK)
|
||||
newscreen.spell_base = "const" //construct spells
|
||||
else
|
||||
@@ -85,7 +89,7 @@
|
||||
if(spell_objects.len)
|
||||
toggle_open(showing + 1)
|
||||
else
|
||||
spell_holder.spell_master = null
|
||||
spell_holder.spell_masters.Remove(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/screen/movable/spell_master/proc/silence_spells(var/amount)
|
||||
@@ -101,8 +105,18 @@
|
||||
spell.update_charge(forced)
|
||||
|
||||
|
||||
/obj/screen/movable/spell_master/genetic
|
||||
name = "Mutant Powers"
|
||||
icon_state = "genetic_spell_ready"
|
||||
|
||||
//ACTUAL SPELLS
|
||||
open_state = "genetics_open"
|
||||
closed_state = "genetics_closed"
|
||||
|
||||
screen_loc = ui_genetic_master
|
||||
|
||||
//////////////ACTUAL SPELLS//////////////
|
||||
//This is what you click to cast things//
|
||||
/////////////////////////////////////////
|
||||
/obj/screen/spell
|
||||
icon = 'icons/mob/screen_spells.dmi'
|
||||
icon_state = "wiz_spell_base"
|
||||
@@ -123,20 +137,7 @@
|
||||
return //nothing to see here
|
||||
|
||||
overlays -= spell.hud_state
|
||||
/*
|
||||
if(spell.charge_type == Sp_RECHARGE)
|
||||
if(spell.charge_counter < spell.charge_max)
|
||||
icon_state = "[spell_base]_spell_base"
|
||||
else
|
||||
icon_state = "[spell_base]_spell_ready"
|
||||
else if(spell.charge_type == Sp_CHARGES)
|
||||
icon_state = "[spell_base]_spell_base"
|
||||
if(spell.charge_counter)
|
||||
var/icon/partial_charge = icon(src.icon, "[spell_base]_spell_ready")
|
||||
world << "[partial_charge.Width()], [partial_charge.Height() * round(spell.charge_counter / spell.charge_max)]"
|
||||
partial_charge.Crop(1, 1, partial_charge.Width(), partial_charge.Height() * round(spell.charge_counter / spell.charge_max))
|
||||
overlays += partial_charge
|
||||
*/
|
||||
|
||||
if(spell.charge_type == Sp_RECHARGE || spell.charge_type == Sp_CHARGES)
|
||||
if(spell.charge_counter < spell.charge_max)
|
||||
icon_state = "[spell_base]_spell_base"
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..(M,connected,flags)
|
||||
var/spell/granted = new spelltype
|
||||
M.add_spell(granted, "genetic_spell_ready")
|
||||
M.add_spell(granted, "genetic_spell_ready", /obj/screen/movable/spell_master/genetic)
|
||||
if(!granted_spells)
|
||||
granted_spells = list()
|
||||
granted_spells += granted
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
client.view = max(client.view, world.view+2)
|
||||
CallHook("Login", list("client" = src.client, "mob" = src))
|
||||
|
||||
if(spell_master)
|
||||
client.screen += spell_master
|
||||
spell_master.toggle_open(spell_master.showing + 1)
|
||||
if(spell_masters)
|
||||
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
|
||||
client.screen += spell_master
|
||||
spell_master.toggle_open(spell_master.showing + 1)
|
||||
@@ -139,8 +139,9 @@
|
||||
return 0
|
||||
|
||||
/mob/proc/Life()
|
||||
if(spell_master)
|
||||
spell_master.update_spells(0, src)
|
||||
if(spell_masters && spell_masters.len)
|
||||
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
|
||||
spell_master.update_spells(0, src)
|
||||
return
|
||||
|
||||
/mob/proc/see_narsie(var/obj/machinery/singularity/narsie/large/N, var/dir)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
var/obj/screen/m_hatbg = null
|
||||
|
||||
//spells hud icons - this interacts with add_spell and remove_spell
|
||||
var/obj/screen/movable/spell_master/spell_master = null
|
||||
var/list/obj/screen/movable/spell_master/spell_masters = null
|
||||
|
||||
//thou shall always be able to see the Geometer of Blood
|
||||
var/image/narsimage = null
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
/mob/proc/add_spell(var/spell/spell_to_add, var/spell_base = "wiz_spell_ready")
|
||||
if(!spell_master)
|
||||
spell_master = new
|
||||
if(spell_base)
|
||||
spell_master.icon_state = spell_base
|
||||
if(client)
|
||||
src.client.screen += spell_master
|
||||
spell_master.spell_holder = src
|
||||
/mob/proc/add_spell(var/spell/spell_to_add, var/spell_base = "wiz_spell_ready", var/master_type = /obj/screen/movable/spell_master)
|
||||
if(!spell_masters)
|
||||
spell_masters = list()
|
||||
|
||||
if(spell_masters.len)
|
||||
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
|
||||
if(spell_master.type == master_type)
|
||||
spell_list.Add(spell_to_add)
|
||||
spell_master.add_spell(spell_to_add)
|
||||
return 1
|
||||
|
||||
var/obj/screen/movable/spell_master/new_spell_master = new master_type //we're here because either we didn't find our type, or we have no spell masters to attach to
|
||||
if(client)
|
||||
src.client.screen += new_spell_master
|
||||
new_spell_master.spell_holder = src
|
||||
new_spell_master.add_spell(spell_to_add)
|
||||
if(spell_base)
|
||||
new_spell_master.icon_state = spell_base
|
||||
spell_masters.Add(new_spell_master)
|
||||
spell_list.Add(spell_to_add)
|
||||
spell_master.add_spell(spell_to_add)
|
||||
return 1
|
||||
|
||||
/mob/proc/remove_spell(var/spell/spell_to_remove)
|
||||
@@ -18,18 +27,20 @@
|
||||
if(!(spell_to_remove in spell_list))
|
||||
return
|
||||
|
||||
if(!spell_master)
|
||||
if(!spell_masters || !spell_masters.len)
|
||||
return
|
||||
|
||||
spell_list.Remove(spell_to_remove)
|
||||
spell_master.remove_spell(spell_to_remove)
|
||||
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
|
||||
spell_master.remove_spell(spell_to_remove)
|
||||
return 1
|
||||
|
||||
/mob/proc/silence_spells(var/amount = 0)
|
||||
if(!(amount >= 0))
|
||||
return
|
||||
|
||||
if(!spell_master)
|
||||
if(!spell_masters || !spell_masters.len)
|
||||
return
|
||||
|
||||
spell_master.silence_spells(amount)
|
||||
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
|
||||
spell_master.silence_spells(amount)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 33 KiB |
Reference in New Issue
Block a user