Overhauls and 2/28 sync (#244)

* map tweaks/shuttle engines

* helpers and defines

* global/onclick

* controllers and datums

* mapping

* game folder

* some other stuff

* some modules

* modules that aren't mobs

* some mob stuff

* new player stuff

* mob living

* silicon stuff

* simple animal things

* carbon/ayylmao

* update_icons

* carbon/human

* sounds and tools

* icons and stuff

* hippie grinder changes + tgui

* kitchen.dmi

* compile issues fixed

* mapfix

* Mapfixes 2.0

* mapedit2.0

* mapmerger pls

* Revert "mapedit2.0"

This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481.

* clean up vore folder + 2 hotfixes

* admin ticket refinement

* Blob tweaks and LAZYADD

* LAZYADD IS LAZY

* Magic strings purged

* DEFINES NEED HIGHER PRIORITIES

* Only a sleepless idiot deals in absolute TRUE|FALSE

* u h g

* progress bar fix

* reverts ticket logs

* there's always that one guy

* fixes and stuff

* 2/27 fixes

* game folder stuff

* stats

* some modules again

* clothing stuff

gets vg clothing out of the main files

* everything not mobs again

* mob stuff

* maps, tgui, sql stuff

* icons

* additional fixes and compile errors

* don't need this anymore

* Oh right this isn't needed anymore

* maint bar re-added

* that doesn't need to be here

* stupid events

* wtfeven

* probably makes Travis happy

* don't care to fix the grinder atm

* fixes vending sprites, changes turret

* lethal, not lethals

* overylays are finicky creatures

* lazy fix for bleeding edgy (#252)

* map tweaks/shuttle engines

* helpers and defines

* global/onclick

* controllers and datums

* mapping

* game folder

* some other stuff

* some modules

* modules that aren't mobs

* some mob stuff

* new player stuff

* mob living

* silicon stuff

* simple animal things

* carbon/ayylmao

* update_icons

* carbon/human

* sounds and tools

* icons and stuff

* hippie grinder changes + tgui

* kitchen.dmi

* compile issues fixed

* mapfix

* Mapfixes 2.0

* mapedit2.0

* mapmerger pls

* Revert "mapedit2.0"

This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481.

* clean up vore folder + 2 hotfixes

* admin ticket refinement

* Blob tweaks and LAZYADD

* LAZYADD IS LAZY

* Magic strings purged

* DEFINES NEED HIGHER PRIORITIES

* Only a sleepless idiot deals in absolute TRUE|FALSE

* u h g

* progress bar fix

* reverts ticket logs

* there's always that one guy

* fixes and stuff

* 2/27 fixes

* game folder stuff

* stats

* some modules again

* clothing stuff

gets vg clothing out of the main files

* everything not mobs again

* mob stuff

* maps, tgui, sql stuff

* icons

* additional fixes and compile errors

* don't need this anymore

* Oh right this isn't needed anymore

* maint bar re-added

* that doesn't need to be here

* stupid events

* wtfeven

* probably makes Travis happy

* don't care to fix the grinder atm

* fixes vending sprites, changes turret

* lethal, not lethals

* overylays are finicky creatures
This commit is contained in:
Poojawa
2017-02-28 09:30:49 -06:00
committed by GitHub
parent 93782cf716
commit 0bca862419
544 changed files with 309981 additions and 81206 deletions
+5 -1
View File
@@ -7,6 +7,7 @@
var/active = FALSE //Used by toggle based abilities.
var/ranged_mousepointer
var/mob/living/ranged_ability_user
var/ranged_clickcd_override = -1
var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now
@@ -20,7 +21,10 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
caller << "<span class='warning'><b>[caller.ranged_ability.name]</b> has been disabled."
caller.ranged_ability.remove_ranged_ability()
return TRUE //TRUE for failed, FALSE for passed.
ranged_ability_user.next_click = world.time + CLICK_CD_CLICK_ABILITY
if(ranged_clickcd_override >= 0)
ranged_ability_user.next_click = world.time + ranged_clickcd_override
else
ranged_ability_user.next_click = world.time + CLICK_CD_CLICK_ABILITY
ranged_ability_user.face_atom(A)
return FALSE
+12 -25
View File
@@ -6,7 +6,9 @@
var/active_msg = "You charge your projectile!"
var/base_icon_state = "projectile"
var/active_icon_state = "projectile"
var/projectile_damage_override = -1
var/list/projectile_var_overrides = list()
var/projectile_amount = 1 //Projectiles per cast.
var/current_amount = 1 //How many projectiles left.
/obj/effect/proc_holder/spell/aimed/Click()
var/mob/living/user = usr
@@ -22,6 +24,7 @@
remove_ranged_ability(msg)
else
msg = "<span class='notice'>[active_msg]<B>Left-click to shoot it at a target!</B></span>"
current_amount = projectile_amount
add_ranged_ability(user, msg, TRUE)
/obj/effect/proc_holder/spell/aimed/update_icon()
@@ -48,18 +51,18 @@
return FALSE
fire_projectile(user, target)
user.newtonian_move(get_dir(U, T))
remove_ranged_ability() //Auto-disable the ability once successfully performed
current_amount--
if(current_amount <= 0)
remove_ranged_ability() //Auto-disable the ability once you run out of bullets.
return TRUE
/obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target)
var/obj/item/projectile/P = new projectile_type(user.loc)
P.current = get_turf(user)
P.preparePixelProjectile(target, get_turf(target), user)
if(projectile_damage_override != -1)
P.damage = projectile_damage_override
P.nodamage = TRUE
if(P.damage)
P.nodamage = FALSE
for(var/V in projectile_var_overrides)
if(P.vars[V])
P.vars[V] = projectile_var_overrides[V]
P.fire()
return TRUE
@@ -76,26 +79,10 @@
base_icon_state = "lightning"
sound = 'sound/magic/lightningbolt.ogg'
active = FALSE
var/tesla_range = 15
var/tesla_power = 20000
var/tesla_boom = FALSE
projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_boom" = FALSE)
active_msg = "You energize your hand with arcane lightning!"
deactive_msg = "You let the energy flow out of your hands back into yourself..."
/obj/effect/proc_holder/spell/aimed/lightningbolt/fire_projectile(mob/living/user, atom/target)
var/obj/item/projectile/magic/aoe/lightning/P = new /obj/item/projectile/magic/aoe/lightning(user.loc)
P.current = get_turf(user)
P.preparePixelProjectile(target, get_turf(target), user)
if(projectile_damage_override != -1)
P.damage = projectile_damage_override
P.nodamage = TRUE
if(P.damage)
P.nodamage = FALSE
P.tesla_power = tesla_power
P.tesla_range = tesla_range
P.tesla_boom = tesla_boom
P.fire()
return TRUE
projectile_type = /obj/item/projectile/magic/aoe/lightning
/obj/effect/proc_holder/spell/aimed/fireball
name = "Fireball"
+2 -2
View File
@@ -1,6 +1,6 @@
/obj/effect/proc_holder/spell/targeted/barnyardcurse
name = "Curse of the Barnyard"
desc = "This spell dooms the fate of any unlucky soul to the speech and facial attributes of a barnyard animal"
desc = "This spell dooms an unlucky soul to possess the speech and facial attributes of a barnyard animal."
school = "transmutation"
charge_type = "recharge"
charge_max = 150
@@ -40,7 +40,7 @@
var/obj/item/clothing/mask/magichead = new choice
magichead.flags |=NODROP
magichead.flags_inv = null
target.visible_message("<span class='danger'>[target]'s face lights up in fire, and after the event a barnyard animal's head takes it's place!</span>", \
target.visible_message("<span class='danger'>[target]'s face bursts into flames, and a barnyard animal's head takes its place!</span>", \
"<span class='danger'>Your face burns up, and shortly after the fire you realise you have the face of a barnyard animal!</span>")
if(!target.dropItemToGround(target.wear_mask))
qdel(target.wear_mask)
+2 -2
View File
@@ -26,7 +26,7 @@
if(M.mind)
for(var/obj/effect/proc_holder/spell/S in M.mind.spell_list)
S.charge_counter = S.charge_max
M <<"<span class='notice'>you feel raw magic flowing through you, it feels good!</span>"
M <<"<span class='notice'>You feel raw magic flowing through you. It feels good!</span>"
else
M <<"<span class='notice'>you feel very strange for a moment, but then it passes.</span>"
burnt_out = 1
@@ -91,7 +91,7 @@
charged_item = item
break
if(!charged_item)
L << "<span class='notice'>you feel magical power surging to your hands, but the feeling rapidly fades...</span>"
L << "<span class='notice'>You feel magical power surging through your hands, but the feeling rapidly fades...</span>"
else if(burnt_out)
L << "<span class='caution'>[charged_item] doesn't seem to be reacting to the spell...</span>"
else
+1 -1
View File
@@ -158,7 +158,7 @@
fakefire()
src.loc = get_turf(src)
src.client.eye = src
src.visible_message("<span class='warning'><B>[src] appears in a firey blaze!</B>")
src.visible_message("<span class='warning'><B>[src] appears in a fiery blaze!</B>")
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
addtimer(CALLBACK(src, .proc/fakefireextinguish), 15, TIMER_UNIQUE)
+6 -5
View File
@@ -11,15 +11,16 @@
range = -1
include_user = 1
cooldown_min = 50 //12 deciseconds reduction per rank
var/wall_type = /obj/effect/forcefield/wizard
/obj/effect/proc_holder/spell/targeted/forcewall/cast(list/targets,mob/user = usr)
new /obj/effect/forcefield/wizard(get_turf(user),user)
new wall_type(get_turf(user),user)
if(user.dir == SOUTH || user.dir == NORTH)
new /obj/effect/forcefield/wizard(get_step(user, EAST),user)
new /obj/effect/forcefield/wizard(get_step(user, WEST),user)
new wall_type(get_step(user, EAST),user)
new wall_type(get_step(user, WEST),user)
else
new /obj/effect/forcefield/wizard(get_step(user, NORTH),user)
new /obj/effect/forcefield/wizard(get_step(user, SOUTH),user)
new wall_type(get_step(user, NORTH),user)
new wall_type(get_step(user, SOUTH),user)
/obj/effect/forcefield/wizard
+3 -3
View File
@@ -7,7 +7,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
item_state = null
flags = ABSTRACT | NODROP
flags = ABSTRACT | NODROP | DROPDEL
w_class = WEIGHT_CLASS_HUGE
force = 0
throwforce = 0
@@ -33,10 +33,10 @@
attached_spell.attached_hand = null
qdel(src)
/obj/item/weapon/melee/touch_attack/dropped()
/obj/item/weapon/melee/touch_attack/Destroy()
if(attached_spell)
attached_spell.attached_hand = null
qdel(src)
return ..()
/obj/item/weapon/melee/touch_attack/disintegrate
name = "\improper disintegrating touch"
+2 -2
View File
@@ -26,7 +26,7 @@
user << "<span class='notice'>You start gathering the power.</span>"
Snd = new/sound('sound/magic/lightning_chargeup.ogg',channel = 7)
halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER)
user.overlays.Add(halo)
user.add_overlay(halo)
playsound(get_turf(user), Snd, 50, 0)
if(do_mob(user,user,100,1))
if(ready && cast_check(skipcharge=1))
@@ -39,7 +39,7 @@
/obj/effect/proc_holder/spell/targeted/tesla/proc/Reset(mob/user = usr)
ready = 0
if(halo)
user.overlays.Remove(halo)
user.cut_overlay(halo)
/obj/effect/proc_holder/spell/targeted/tesla/revert_cast(mob/user = usr, message = 1)
if(message)
+75 -2
View File
@@ -1,5 +1,5 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall
name = "Invisible wall"
name = "Invisible Wall"
desc = "The mime's performance transmutates into physical reality."
school = "mime"
panel = "Mime"
@@ -59,4 +59,77 @@
if(H.mind.miming)
H << "<span class='notice'>You make a vow of silence.</span>"
else
H << "<span class='notice'>You break your vow of silence.</span>"
H << "<span class='notice'>You break your vow of silence.</span>"
// These spells can only be gotten from the "Guide for Advanced Mimery series+" for Mime Traitors.
/obj/effect/proc_holder/spell/targeted/forcewall/mime
name = "Invisible Blockade"
desc = "With more polished skills, a powerful mime can create a invisble blockade, blocking off a 3x1 area."
wall_type = /obj/effect/forcefield/mime/advanced
invocation_type = "emote"
invocation_emote_self = "<span class='notice'>You form a blockade in front of yourself.</span>"
charge_max = 600
sound = null
clothes_req = 0
range = -1
include_user = 1
action_icon_state = "mime"
action_background_icon_state = "bg_mime"
/obj/effect/proc_holder/spell/targeted/forcewall/mime/Click()
if(usr && usr.mind)
if(!usr.mind.miming)
usr << "<span class='notice'>You must dedicate yourself to silence first.</span>"
return
invocation = "<B>[usr.real_name]</B> looks as if a blockade is in front of [usr.p_them()]."
else
invocation_type ="none"
..()
/obj/effect/proc_holder/spell/aimed/finger_guns
name = "Finger Guns"
desc = "An ancient technqiue, passed down from mentor to student. Allows you to shoot bullets out of your fingers."
school = "mime"
panel = "Mime"
charge_max = 300
clothes_req = 0
invocation_type = "emote"
invocation_emote_self = "<span class='dangers'>You fire your finger gun!</span>"
range = 20
projectile_type = /obj/item/projectile/bullet/weakbullet2
sound = null
active_msg = "You draw your fingers!"
deactive_msg = "You put your fingers at ease. Another time."
active = FALSE
action_icon_state = "mime"
action_background_icon_state = "bg_mime"
base_icon_state = "mime"
/obj/effect/proc_holder/spell/aimed/finger_guns/Click()
if(usr && usr.mind)
if(!usr.mind.miming)
usr << "<span class='notice'>You must dedicate yourself to silence first.</span>"
return
invocation = "<B>[usr.real_name]</B> fires [usr.p_their()] finger gun!"
else
invocation_type ="none"
..()
/obj/item/weapon/spellbook/oneuse/mimery_blockade
spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime
spellname = ""
name = "Guide to Advanced Mimery Vol 1"
desc = "When you turn the pages, it won't make a sound!"
icon_state ="bookmime"
/obj/item/weapon/spellbook/oneuse/mimery_guns
spell = /obj/effect/proc_holder/spell/aimed/finger_guns
spellname = ""
name = "Guide to Advanced Mimery Vol 2"
desc = "There aren't any words written..."
icon_state ="bookmime"
@@ -0,0 +1,44 @@
/obj/effect/proc_holder/spell/voice_of_god
name = "Voice of God"
desc = "Speak with an incredibly compelling voice, forcing listeners to obey your commands."
charge_max = 1200 //variable
cooldown_min = 0
level_max = 1
clothes_req = 0
action_icon_state = "voice_of_god"
var/command
var/cooldown_mod = 1
var/power_mod = 1
var/list/spans = list("colossus","yell")
var/speech_sound = 'sound/magic/clockwork/invoke_general.ogg'
/obj/effect/proc_holder/spell/voice_of_god/can_cast(mob/user = usr)
if(!user.can_speak())
user << "<span class='warning'>You are unable to speak!</span>"
return FALSE
return TRUE
/obj/effect/proc_holder/spell/voice_of_god/choose_targets(mob/user = usr)
perform(user=user)
/obj/effect/proc_holder/spell/voice_of_god/perform(list/targets, recharge = 1, mob/user = usr)
command = input(user, "Speak with the Voice of God", "Command")
if(QDELETED(src) || QDELETED(user))
return
if(!command)
revert_cast(user)
return
..()
/obj/effect/proc_holder/spell/voice_of_god/cast(list/targets, mob/user = usr)
user.say(uppertext(command), spans = spans, sanitize = FALSE)
playsound(get_turf(user), speech_sound, 300, 1, 5)
var/cooldown = voice_of_god(command, user, spans, base_multiplier = power_mod)
charge_max = (cooldown * cooldown_mod)
/obj/effect/proc_holder/spell/voice_of_god/clown
name = "Voice of Clown"
desc = "Speak with an incredibly funny voice, startling people into obeying you for a brief moment."
power_mod = 0.1
cooldown_mod = 0.5
spans = list("clown")
speech_sound = 'sound/spookoween/scary_horn2.ogg'