mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
The wizard now has a voice, and plantbags can now feed plants directly into the biogenerator.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2059 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -76,15 +76,15 @@ var/list/spells = typesof(/obj/proc_holder/spell) //needed for the badmin verb f
|
||||
|
||||
/obj/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
|
||||
|
||||
switch(invocation_type)
|
||||
if("shout")
|
||||
usr.say(invocation)
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
if("whisper")
|
||||
usr.whisper(invocation)
|
||||
// switch(invocation_type)
|
||||
// if("shout")
|
||||
// usr.say(invocation)
|
||||
// if(usr.gender=="male")
|
||||
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
// else
|
||||
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
// if("whisper")
|
||||
// usr.whisper(invocation)
|
||||
|
||||
/obj/proc_holder/spell/New()
|
||||
..()
|
||||
|
||||
@@ -49,15 +49,15 @@
|
||||
/obj/proc_holder/spell/targeted/area_teleport/invocation(area/chosenarea = null)
|
||||
if(!invocation_area || !chosenarea)
|
||||
..()
|
||||
else
|
||||
switch(invocation_type)
|
||||
if("shout")
|
||||
usr.say("[invocation] [uppertext(chosenarea.name)]")
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
if("whisper")
|
||||
usr.whisper("[invocation] [uppertext(chosenarea.name)]")
|
||||
|
||||
return
|
||||
// else
|
||||
// switch(invocation_type)
|
||||
// if("shout")
|
||||
// usr.say("[invocation] [uppertext(chosenarea.name)]")
|
||||
// if(usr.gender=="male")
|
||||
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
// else
|
||||
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
// if("whisper")
|
||||
// usr.whisper("[invocation] [uppertext(chosenarea.name)]")
|
||||
//
|
||||
// return
|
||||
@@ -20,6 +20,7 @@
|
||||
usr.verbs += /client/proc/blind
|
||||
|
||||
usr.whisper("STI KALY")
|
||||
playsound(usr.loc,'stikaly.ogg', 100,1)
|
||||
// usr.spellvoice()
|
||||
|
||||
var/obj/overlay/B = new /obj/overlay( M.loc )
|
||||
@@ -53,6 +54,7 @@
|
||||
if(!usr.casting()) return
|
||||
|
||||
usr.say("FORTI GY AMA")
|
||||
playsound(usr.loc,'fortigyama.ogg', 100.1)
|
||||
usr.spellvoice()
|
||||
|
||||
for (var/mob/living/M as mob in oview())
|
||||
@@ -155,6 +157,7 @@
|
||||
var/forcefield
|
||||
|
||||
usr.whisper("TARCOL MINTI ZHERI")
|
||||
playsound(usr.loc,'tarcolminti.ogg', 100,1)
|
||||
// usr.spellvoice()
|
||||
|
||||
forcefield = new /obj/forcefield(locate(usr.x,usr.y,usr.z))
|
||||
@@ -178,6 +181,7 @@
|
||||
usr.verbs += /client/proc/fireball
|
||||
|
||||
usr.say("ONI SOMA")
|
||||
playsound(usr.loc,'onisoma.ogg', 100,1)
|
||||
// usr.spellvoice()
|
||||
|
||||
var/obj/overlay/A = new /obj/overlay( usr.loc )
|
||||
@@ -235,6 +239,7 @@
|
||||
usr.verbs += /mob/proc/kill
|
||||
|
||||
usr.say("EI NATH")
|
||||
playsound('einath.ogg')
|
||||
usr.spellvoice()
|
||||
|
||||
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
|
||||
@@ -258,6 +263,7 @@
|
||||
usr.verbs += /mob/proc/tech
|
||||
|
||||
usr.say("NEC CANTIO")
|
||||
playsound(usr.loc,'neccantio.ogg', 100,1)
|
||||
usr.spellvoice()
|
||||
empulse(src, 6, 10)
|
||||
return
|
||||
@@ -321,6 +327,7 @@
|
||||
var/area/thearea = teleportlocs[A]
|
||||
|
||||
usr.say("SCYAR NILA [uppertext(A)]")
|
||||
playsound(usr.loc,'scyarnila.ogg', 100,1)
|
||||
usr.spellvoice()
|
||||
|
||||
var/datum/effects/system/harmless_smoke_spread/smoke = new /datum/effects/system/harmless_smoke_spread()
|
||||
@@ -475,6 +482,7 @@
|
||||
usr.verbs += /client/proc/mutate
|
||||
|
||||
usr.say("BIRUZ BENNAR")
|
||||
playsound(usr.loc,'brucebanner.ogg', 100,1)
|
||||
usr.spellvoice()
|
||||
|
||||
usr << text("\blue You feel strong! Your mind expands!")
|
||||
|
||||
@@ -662,10 +662,10 @@ Outputs the appropriate voice if the user is not a mime.
|
||||
Made a proc here so it's not repeated several times.*/
|
||||
/mob/proc/spellvoice()
|
||||
// if(!usr.miming)No longer necessary.
|
||||
if(usr.gender=="male")
|
||||
playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
else
|
||||
playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
// if(usr.gender=="male")
|
||||
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
// else
|
||||
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,10 +40,27 @@
|
||||
O.loc = src
|
||||
beaker = O
|
||||
updateUsrDialog()
|
||||
else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
user << "\red You cannot put this in [src.name]"
|
||||
else if(processing)
|
||||
user << "\red The biogenerator is currently processing."
|
||||
else if(istype(O, /obj/item/weapon/plantbag))
|
||||
var/i = 0
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents)
|
||||
i++
|
||||
if(i >= 10)
|
||||
user << "\red The biogenerator is already full! Activate it."
|
||||
else
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
|
||||
G.loc = src
|
||||
i++
|
||||
if(i >= 10)
|
||||
user << "\blue You fill the biogenerator to its capacity."
|
||||
break
|
||||
if(i<10)
|
||||
user << "\blue You empty the plant bag into the biogenerator."
|
||||
|
||||
|
||||
else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
user << "\red You cannot put this in [src.name]"
|
||||
else
|
||||
var/i = 0
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// Todo: Allow harvesting from crops, and emptying into the bioprocessor
|
||||
// Eventually make the new refrigerator-vender, allow emptying into it.
|
||||
|
||||
/**********************Plant Bag**************************/
|
||||
|
||||
@@ -8,7 +6,7 @@
|
||||
icon_state = "plantbag"
|
||||
name = "Plant Bag"
|
||||
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
||||
var/capacity = 50; //the number of plant pieces it can carry.
|
||||
var/capacity = 10; //the number of plant pieces it can carry.
|
||||
flags = FPRINT | TABLEPASS | ONBELT
|
||||
w_class = 1
|
||||
|
||||
@@ -60,3 +58,132 @@
|
||||
else
|
||||
user << "\blue The plant bag is full."
|
||||
return
|
||||
|
||||
|
||||
/* SmartFridge. Much todo
|
||||
*/
|
||||
/obj/machinery/smartfridge
|
||||
name = "SmartFridge"
|
||||
icon = 'vending.dmi'
|
||||
icon_state = "smartfridge"
|
||||
layer = 2.9
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 100
|
||||
flags = NOREACT
|
||||
var/global/max_n_of_items = 200
|
||||
var/item_quants = list()
|
||||
var/ispowered = 1 //starts powered
|
||||
var/isbroken = 0
|
||||
|
||||
|
||||
/obj/machinery/smartfridge/power_change()
|
||||
if( powered() )
|
||||
src.ispowered = 1
|
||||
stat &= ~NOPOWER
|
||||
if(!isbroken)
|
||||
icon_state = "smartfridge"
|
||||
else
|
||||
spawn(rand(0, 15))
|
||||
src.ispowered = 0
|
||||
stat |= NOPOWER
|
||||
if(!isbroken)
|
||||
icon_state = "smartfridge-off"
|
||||
|
||||
|
||||
/*******************
|
||||
* Item Adding
|
||||
********************/
|
||||
|
||||
/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(!src.ispowered)
|
||||
user << "\red The [src] is unpowered and useless."
|
||||
return
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/))
|
||||
if (contents.len>=max_n_of_items)
|
||||
user << "\red This [src] is full of ingredients, you cannot put more."
|
||||
return 1
|
||||
/*todo: plantbag*/
|
||||
else
|
||||
user.before_take_item(O)
|
||||
O.loc = src
|
||||
if(item_quants[O.name])
|
||||
item_quants[O.name]++
|
||||
else
|
||||
item_quants[O.name]=1
|
||||
user.visible_message( \
|
||||
"\blue [user] has added \the [O] to \the [src].", \
|
||||
"\blue You add \the [O] to \the [src].")
|
||||
else if (istype(O, /obj/item/weapon/plantbag))
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
|
||||
O.contents -= G
|
||||
G.loc = src
|
||||
if(item_quants[G.name])
|
||||
item_quants[G.name]++
|
||||
else
|
||||
item_quants[G.name]=1
|
||||
user.visible_message( \
|
||||
"\blue [user] loads \the [src] with \the [O].", \
|
||||
"\blue You load \the [src] with \the [O].")
|
||||
|
||||
else
|
||||
user << "\red The [src] smartly refuses [O]."
|
||||
return 1
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/smartfridge/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/smartfridge/attack_ai(mob/user as mob)
|
||||
return 0
|
||||
|
||||
/obj/machinery/smartfridge/attack_hand(mob/user as mob)
|
||||
user.machine = src
|
||||
interact(user)
|
||||
|
||||
/*******************
|
||||
* SmartFridge Menu
|
||||
********************/
|
||||
|
||||
/obj/machinery/smartfridge/proc/interact(mob/user as mob)
|
||||
if(!src.ispowered)
|
||||
return
|
||||
|
||||
var/dat = "<TT><b>Select an item:</b><br>"
|
||||
|
||||
if (contents.len == 0)
|
||||
dat += "<font color = 'red'>No product loaded!</font>"
|
||||
else
|
||||
for (var/O in item_quants)
|
||||
if(item_quants[O] > 0)
|
||||
var/N = item_quants[O]
|
||||
dat += "<FONT color = 'blue'><B>[capitalize(O)]</B>:"
|
||||
dat += " [N] </font>"
|
||||
dat += "<a href='byond://?src=\ref[src];vend=[O]'>Vend</A>"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "</TT>"
|
||||
user << browse("<HEAD><TITLE>SmartFridge Supplies</TITLE></HEAD><TT>[dat]</TT>", "window=smartfridge")
|
||||
onclose(user, "smartfridge")
|
||||
return
|
||||
|
||||
/obj/machinery/smartfridge/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
usr.machine = src
|
||||
|
||||
var/N = href_list["vend"]
|
||||
|
||||
if(item_quants[N] <= 0) // Sanity check, there are probably ways to press the button when it shouldn't be possible.
|
||||
return
|
||||
|
||||
item_quants[N] -= 1
|
||||
for(var/obj/O in contents)
|
||||
if(O.name == N)
|
||||
O.loc = src.loc
|
||||
break
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
BIN
sound/spells/brucebanner.ogg
Normal file
BIN
sound/spells/brucebanner.ogg
Normal file
Binary file not shown.
BIN
sound/spells/einath.ogg
Normal file
BIN
sound/spells/einath.ogg
Normal file
Binary file not shown.
BIN
sound/spells/fortigyama.ogg
Normal file
BIN
sound/spells/fortigyama.ogg
Normal file
Binary file not shown.
BIN
sound/spells/neccantio.ogg
Normal file
BIN
sound/spells/neccantio.ogg
Normal file
Binary file not shown.
BIN
sound/spells/onisoma.ogg
Normal file
BIN
sound/spells/onisoma.ogg
Normal file
Binary file not shown.
BIN
sound/spells/scyarnila.ogg
Normal file
BIN
sound/spells/scyarnila.ogg
Normal file
Binary file not shown.
BIN
sound/spells/stikaly.ogg
Normal file
BIN
sound/spells/stikaly.ogg
Normal file
Binary file not shown.
BIN
sound/spells/tarcolminti.ogg
Normal file
BIN
sound/spells/tarcolminti.ogg
Normal file
Binary file not shown.
@@ -151,6 +151,7 @@
|
||||
#define FILE_DIR "sound/machines"
|
||||
#define FILE_DIR "sound/misc"
|
||||
#define FILE_DIR "sound/piano"
|
||||
#define FILE_DIR "sound/spells"
|
||||
#define FILE_DIR "sound/voice"
|
||||
#define FILE_DIR "sound/weapons"
|
||||
// END_FILE_DIR
|
||||
|
||||
Reference in New Issue
Block a user